创建基于连接范围的名称
Creating names scoped based on join
我需要在我的 rails 项目中根据它们是否支持 iphone 筛选 'apps'。我试图为此目的创建一个命名范围,但出现以下错误。
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}}
conditions 需要一个散列,而不是一个块。
试试这个:
named_scope :with_iphone_support,
conditions: 'exists(select * from versions where iphone_support = 1 and app_id = apps.id)'
通常 Rails 2:
应该是这样的
named_scope :with_iphone_support,
joins: :version,
conditions: { versions: { iphone_support: true } }
不可能将块传递给类似的东西。
Rails 3.x 和更新版本使用 scope
+ where
方法定义范围。
我需要在我的 rails 项目中根据它们是否支持 iphone 筛选 'apps'。我试图为此目的创建一个命名范围,但出现以下错误。
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}}
conditions 需要一个散列,而不是一个块。
试试这个:
named_scope :with_iphone_support,
conditions: 'exists(select * from versions where iphone_support = 1 and app_id = apps.id)'
通常 Rails 2:
应该是这样的named_scope :with_iphone_support,
joins: :version,
conditions: { versions: { iphone_support: true } }
不可能将块传递给类似的东西。
Rails 3.x 和更新版本使用 scope
+ where
方法定义范围。