Rails 4 允许你定义has_many
这样的关系:
class Customer < ActiveRecord::Base
has_many :orders, -> { where processed: true }
end
因此,无论何时您都customer.orders
只会获得已处理的订单。
但是,如果我需要使where
条件动态化怎么办?如何将参数传递给范围 lambda?
例如,我只想为客户当前在多租户环境中登录的帐户显示订单。
这是我所拥有的:
class Customer < ActiveRecord::Base
has_many :orders, (account) { where(:account_id => account.id) }
end
但是,如何在我的控制器或视图中传递正确的帐户?当我这样做时,上面的代码已经到位:
customers.orders
我似乎随意地获得了 ID 为 1 的帐户的所有订单。