绑定模型与RoR中的迁移

时间:2012-08-26 19:12:59

标签: ruby ruby-on-rails-3

我对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_tohas_one规则的两个模型,还要创建新迁移并添加car.integer :member_id

我发现它非常不实用和冗余。有没有任何技巧可以自动执行此操作?此外,与模拟与数据库完全分离的Symfony2不同,这里我们需要通知foreign_key列。有没有办法写car.member :member而不是car.integer :member_id之类的东西?这是一个细节,但我很感激。

谢谢:)

1 个答案:

答案 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