我在我的应用中进行了此设置:
User has_many :products
User has_many :product_leads, through: :products
Product belongs_to :user # (in products table there is user_id)
ProductLead belongs_to :product # (in product_leads table there is no user_id)
ProductLead belongs_to :user
使用此设置user.product_leads
正在运行,但product_lead.user
不正常。所以我删除了最后一行。
user_id
表格中没有product_leads
,但我甚至不想这样做。 ProductLead表单与Product表单一起填充为嵌套属性。
有没有比下面更好的方法来定义product_lead.user
?或者我应该在user_id
表中使用product_leads
吗?
product_lead.rb
def user
product.user
end
答案 0 :(得分:1)
我相信has_one :through
协会可以帮到你。
def ProductLead < ActiveRecord::Base
has_one :product
has_one :user, through: :product
# ... other code
end
答案 1 :(得分:1)
我没有看到您提出的方法存在任何问题,只要它是只读的,您不需要为user
分配product
{\ n} { {1}}。
但是,在user
不存在的情况下,您应该防止在{0}上调用product
:
def user
product.try(:user) # Only call `user` if product is non-nil.
end