add_index :section_edits, ['admin_user_id', 'section_id' ]
add_index:sections,[:name,:page_id]
我知道变量是不同的,但我的问题是如何传递变量(即:page_id vs'page_id')。它有所作为吗?哪一个更好?
我注意到,当我使用:name时,它已经在我传递变量之前定义了,但是如果我使用'section_id',那么在教程之后,这个变量以前没有定义过。
以下是一些示例代码:
class CreateSections < ActiveRecord::Migration
def change
create_table :sections do |t|
t.references :page
t.string :name
t.string :content_type
t.integer :position
t.boolean :visible
t.text :content
t.timestamps
end
add_index :sections, [:name, :page_id]
end
end
class CreateSectionEdits < ActiveRecord::Migration
def change
create_table :section_edits do |t|
t.references :admin_user
t.references :section
t.timestamps
end
add_index :section_edits, ['admin_user_id', 'section_id' ]
end
end
谢谢!
答案 0 :(得分:1)
documentation for add_index将column_name(有问题的参数)描述为符号或符号数组,因此这些是正确的(因此更好)类型。其他参数类型产生相同结果的事实应该被视为不被依赖的实现副作用。 (通过遵循源代码,您可以看到字符串当前工作的原因以及符号。)
我不确定你之前定义的:name和'section_id'变量是什么意思,因为:name是一个符号,'section_id'是一个字符串文字,两者都不能用作变量。如果您指的是变量 name 和 section_id ,它们与相应的符号和字符串无关,因此它们是定义的还是未定义的是无关紧要的。
不要因为上述答案而挑剔,但你要问的具体细节,我只是想弄清楚。 : - )