gpt4 book ai didi

ruby-on-rails - 目录 : How to load the related record in a one-to-one relationship

转载 作者:太空宇宙 更新时间:2023-11-03 17:41:20 24 4
gpt4 key购买 nike

我有以下内容:

class User < ActiveRecord::Base
has_one :subscription
end
class Subscription < ActiveRecord::Base
belongs_to :user
end

用户有一个 subscription_id,因此只能有一个订阅(这是我想要的)。

效果很好,但现在我这样做了:

@users = User.find(:all)

并且我希望包括所有订阅。

我试过:

@users = User.find(:all, :include=>[:subscription]) # include subscription

但是那会希望订阅表有一个 user_id(SQLite3::SQLException:没有这样的列:subscriptions.user_id:SELECT "subscriptions".* FROM "subscriptions"WHERE ("subscriptions".user_id = 2))。

这(当然)不是我想要的。

我是 RoR 的新手,在我拥有的书籍和网络上都找不到这个案例的好例子。

最佳答案

我认为您对模型对象的联想方式是错误的。你应该有

class User < ActiveRecord::Base
belongs_to :subscription
end
class Subscription < ActiveRecord::Base
has_one :user
end

belongs_to 应该用在定义外键的关联一侧(在本例中为 subscription_id)。从语义上讲,这可能看起来有点奇怪,但那是因为在这种情况下,rails 会期望 user_id 出现在订阅表上,而不是像您拥有的那样相反。

之后

User.find(:all, :include=>[:subscription]) 

应该没问题

关于ruby-on-rails - 目录 : How to load the related record in a one-to-one relationship,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2912664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com