DRY在许多查询中添加相同条件的方法

时间:2011-03-13 14:46:54

标签: ruby-on-rails activerecord

我使用rails 3.0.5

我有UserCompany个型号,用户belongs_toCompany

ProductBill,还有其他几个belongs_toCompany

出于显而易见的原因,只有当User ProductBill Product's相同时,Company才能对User'sCompany行事。 {1}} {{1}}。

我可以使用自定义范围查询为公司添加条件,但它根本不是DRY。

你会怎么做那个好方法?

由于

3 个答案:

答案 0 :(得分:3)

@product = current_user.company.products.find params[:id]

应该有效。如果你想进一步干它,我建议使用插件InheritedResources,它有一个名为begin_of_association_chain的甜蜜方法(请参阅README中的覆盖默认值),让你在全局定义这些东西。

答案 1 :(得分:0)

您是否查看了命名范围? http://api.rubyonrails.org/classes/ActiveRecord/NamedScope/ClassMethods.html

似乎正是您正在寻找的

答案 2 :(得分:0)

您可以定义关联

  

has_many:products,:through => :公司

然后你可以做

  

user.products.find(PARAMS [:ID])

不确定这是否是正确的方法!