0

我会对 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?这是一个细节,但我会很感激。

谢谢 :)

4

1 回答 1

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 :carMember类中。

有关生成器的更多信息,请参阅:Rails 命令行指南

于 2012-08-26T19:33:10.443 回答