【发布时间】:2016-04-16 08:37:48
【问题描述】:
例如,如果我使用这一行来生成模型:
bin/rails generate model Item Collection:references
然后它会生成这种带有大写引用变量的迁移:
class CreateItems < ActiveRecord::Migration
def change
create_table :items do |t|
t.references :Collection, index: true
t.timestamps
end
end
end
这会在大写的表中生成一个 Collection_id 字段。
问题是我现在想添加一个范围,通过控制器中的 Collection_id 过滤项目:
所以我在 Item 的模型中创建了这个范围
scope :collection_id, -> (Collection_id) { where collection_id: Collection_id }
但是当我在控制器中调用它时: @items = Item.collection_id(@user.Collection_id)
它崩溃了:
形式参数不能是常量范围:collection_id,-> (Collection_id) { where collection_id: Collection_id } ^
我在范围内读取该变量不能是大写变量,但由于迁移默认创建它们,所以我不知道这是有意的还是我做错了。
【问题讨论】:
标签: ruby-on-rails activerecord filtering