我有两个名为
的表Product (prodID: integer, prodName: string, userID: FK)
和
User(userID:integer,userName:string).
用户可以拥有许多产品。我想写一个查询来获取userID = 10的所有产品。但是,我不明白我应该在用户或产品型号中使用哪种型号,或者无关紧要?据推测,模型的输出将被输入到它依赖的控制器中,所以我应该将它放在与我想要显示的视图相关的模型中?这是对的吗?
答案 0 :(得分:2)
您可以直接使用关联方法,无需编写模型方法来获取用户的产品。
In user.rb:
has_many :products
In product.rb
belongs_to :user
and from controller
User.where('id = ?', params[:id]).first.try(:products)
因此,如果找到具有给定id的用户,则上述查询将获取产品。
答案 1 :(得分:1)
在您的控制器中:
@user = User.find(params[:id])
@products = User.of_products(params[:id])
如果您不想在操作中使用@user,则可以避免计算@user。
在user.rb中:
has_many :products
def self.of_products(user_id)
User.includes(:products).where(id: user_id)
end
这将为您提供@user
的所有产品