【发布时间】:2014-06-07 15:09:03
【问题描述】:
我的控制器中有一个实例变量,我正在尝试将其转换为我的模型的范围。
实例变量:产品
@products_with_user_differences = Product.where{|p| p.last_user != p.user.username && p.asset_type.name == "Computer" unless p.user.nil? or p.allow_multi_users == true}
解释:
这会显示 last_user 值不同于 user.username 且类型为 “计算机” 的所有产品。它还排除了 user_id: 为 nil 或 allow_multi_users 属性设置为 TRUE 的任何产品。
我尝试了以下零运气:Products.rb
scope :with_user_differences, -> { where(last_user != user.username && asset_type.name == "Computer" unless user.nil? or allow_multi_users == true)}
它似乎无法识别关联或在范围内允许“!=”。
有什么想法或建议吗?
【问题讨论】:
-
在第一个版本中使用
where{,在第二个版本中使用where(。 A normal ActiveRecordwhere绝对不能在你的范围内做你想做的事情。 -
谢谢,但我已经意识到它不能这样做,因为它不起作用。有关正确方法的任何提示?
-
对不起,如果您认为我的评论没有帮助。我认为它会帮助您了解 为什么 它不起作用。我在其中放置了一个链接,在尝试重写您的查询时可能会有所帮助。
标签: ruby-on-rails associations scopes