2010-09-07 69 views
1

Rails 3新手在这里...我正在创建一个设计认证系统,就像(yammer)有用户所属的实例一样。我有两个表为has_many&belongs_to关联创建连接表

用户(电子邮件,密码......) belongs_to的:例如

实例(域名,活跃....) 的has_many:用户

我添加了belongs_to的和的has_many模型,但模式尚未更新添加连接,我相信这将是一个instance_id列用户的表。这在Rails 3中如何实现?想法,建议?

回答

1

您必须通过迁移将这些列添加到架构中。

http://guides.rubyonrails.org/migrations.html

尝试:

脚本/导轨产生迁移AddInstanceToUsers

然后去你的DB /迁移文件夹中寻找新的文件,并使它看起来像:

class AddInstanceToUsers < ActiveRecord::Migration 

    def self.up 

    add_column :users, :instance_id, :integer 

    end 

    def self.down 

    remove_column :users, :instance_id 

    end 

end 

然后运行

rake db:migrate 

在您的控制台。

+0

谢谢雪橇,我不需要做任何与参考?出于某种原因,我认为Rails 3足够聪明,可以在它看到belongs_to和has_many时自动执行此操作 – AnApprentice 2010-09-07 17:01:59

+0

此外,用户的instance_id列应该有一个索引。你需要添加另一个迁移来实现吗? – AnApprentice 2010-09-07 17:12:56

+1

如果更改模型,Rails将在您的模式中不会更改某些内容。您可以在迁移中使用“t.references:instance”,请参阅我发布的链接。如果需要,您可以在相同的迁移中添加索引。只需在add_column后添加“add_index:users,:instance_id”(当然不包括引号)。 – sled 2010-09-07 17:13:16

相关问题