我在哪个rails模型中放入了多表查询

时间:2015-06-02 05:38:47

标签: ruby-on-rails

我有两个名为

的表
Product (prodID: integer, prodName: string, userID: FK)

User(userID:integer,userName:string).

用户可以拥有许多产品。我想写一个查询来获取userID = 10的所有产品。但是,我不明白我应该在用户或产品型号中使用哪种型号,或者无关紧要?据推测,模型的输出将被输入到它依赖的控制器中,所以我应该将它放在与我想要显示的视图相关的模型中?这是对的吗?

2 个答案:

答案 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

的所有产品