我正在尝试将用户与其创建的产品相关联,但我遇到了问题。我的模型如下所示。
class Product < ActiveRecord::Base
belongs_to :category
belongs_to :user
def userid
@user_id = @product.user
end
end
class User < ActiveRecord::Base
has_many :products, :foreign_key => 'user_id'
end
我正在使用以下视图nil object
<%= @product.userid %>
答案 0 :(得分:2)
Product#userid
方法。Product#userid
方法中,您引用了@product
。这是Product上的product
实例变量。您不需要实例变量来引用自身的对象,只需使用self
,但大多数情况下它都是隐式的。您实际上只是在不明确的情况下需要它(例如user_id = 1
可能是self.user_id=(1)
或将user_id
变量分配给1
。)foreign_key
模型上指定User
,因为您遵循惯例。 所以以下内容应该对您有用:
class Product < ActiveRecord::Base
belongs_to :category
belongs_to :user
end
class User < ActiveRecord::Base
has_many :products
end
@product = Product.first
@product.user #=> <User :foo => 'bar'>
@user = User.first
@user.products.create :some_attribute => 'some value'