我可以輕鬆地創建在Rails腳手架或模型字段,它是引用(外鍵)到另一種模式:可能將列添加到作爲外鍵的ActiveRecord模型?
rails g model Cat owner:references
rails g scaffold Cat owner:references
但我似乎無法在一個添加一列做同樣的遷移:
rails g migration AddOwnerToCats owner:references
什麼上面確實是產生這樣的遷移文件:
class AddOwnerToCats < ActiveRecord::Migration
def change
add_column :cats, :owner, :references
end
end
當我試着和rake db:migrate
運行它,我得到這個:
SQLite3::SQLException: near "references": syntax error: ALTER TABLE "cats" ADD "owner" references
那麼有沒有辦法添加一個引用另一個模型的列?或者我只需要做:
rails g migration AddOwnerToCats owner_id:integer
然後進入遷移並添加索引owner_id
?
如果你看到rails generator模板,你可以看到它會盲目地接受你的命令發送的參數,所以如果你發送rails g migration addOwnerToCats owner_id:your_name它將創建一個字段爲your_name的遷移文件... –
我認爲'references'只能在'create_table'或'change_table'中使用。所以是的,只是做'add_column:貓,:owner_id,:整數',然後'add_index:貓,:owner_id' – j03w
@Rajarshi - 我假設儘可能多.. –