我需要过滤器'应用程序'在我的rails项目中,他们是否支持iphone。我正在尝试为此目的创建一个命名范围,但我收到以下错误。
app/models/app.rb:21: syntax error, unexpected '}', expecting =>
app/models/app.rb:21: syntax error, unexpected '}', expecting =>
app/controllers/apps_controller.rb:5:in `index'
app.rb
named_scope :with_iphone_support,
joins: :version,
conditions: {:versions.any{ |v| v.iphone_support == true}}
答案 0 :(得分:1)
条件需要散列,而不是块。
试试这个:
named_scope :with_iphone_support,
conditions: 'exists(select * from versions where iphone_support = 1 and app_id = apps.id)'
答案 1 :(得分:1)
一般来说,Rails 2看起来应该是这样的:
named_scope :with_iphone_support,
joins: :version,
conditions: { versions: { iphone_support: true } }
不可能将块传递给类似的东西。
Rails 3.x和更新版使用scope
+ where
方法来定义范围。