我对rails中的模型和迁移有疑问。
我们举一个例子。我有一个会员模型:
class Member < ActiveRecord::Base
attr_accessible :a, :b
end
相应的迁移:
class CreateMembers < ActiveRecord::Migration
def change
create_table :members do |t|
t.string :a
t.string :b
end
end
end
我后来才意识到会员有车。所以,我必须创建汽车模型等...
现在,我必须修改添加belong_to
和has_one
规则的两个模型,还要创建新迁移并添加car.integer :member_id
我发现它非常不实用和冗余。有没有任何技巧可以自动执行此操作?此外,与模拟与数据库完全分离的Symfony2不同,这里我们需要通知foreign_key列。有没有办法写car.member :member
而不是car.integer :member_id
之类的东西?这是一个细节,但我很感激。
谢谢:)
答案 0 :(得分:1)
Rails提供了一些智能生成器:
尝试:
rails g model car member:references
这会自动生成完成迁移,其中member_id作为外键(即使有索引),belongs_to :member
行也已添加到Car
类。
rails g model car member:references
生成此内容:
class CreateCars < ActiveRecord::Migration
def change
create_table :cars do |t|
t.references :member
t.timestamps
end
add_index :cars, :member_id
end
end
和此:
class Car < ActiveRecord::Base
belongs_to :member
end
所以唯一要做的就是将行has_one :car
添加到Member
类。
有关生成器的更多信息,请参阅:A Guide to The Rails Command Line