我不确定我是否完全关注这个问题。我想在stores
和documents
之间建立关系。
在文档表中,我希望引用创建它的store
和account
。为此,我将运行此迁移
rails g AddStoreToDocuments store:references
然后在模型中指定foreign_key
和account_id
的{{1}}个?
store_id
正确的方法是什么?
答案 0 :(得分:2)
我建议你阅读rails guide on migration.
您可以使用
生成参考rails g migration AddStoreRefToDocuments store:references
rake db:migrate
这将生成迁移。您的模型应该提到关联以使其正常工作
Class Store < ActiveRecord::Base
has_many :documents
end
Class Document < ActiveRecord::Base
belongs_to :store
end
答案 1 :(得分:1)
在文档表中,我希望引用
store
和account
创造了它。
您的关系应该是belongs_to
而不是has_many
:
belongs_to :store
belongs_to :account
请注意,由于您遵循ActiveRecord约定,因此您无需指定任何外键(它将使用store_id
和account_id
)。
has_many
和Store
模型中应使用Account
关系:
has_many :documents
您还需要更新迁移(或创建新迁移)以添加account:references
。
答案 2 :(得分:1)
您的文件表应该引用这两个表格。
rails g AddStoreToDocuments store:references account:references
关系应该是存储has_many文件和帐户has_many文件。 所以在文档模型中:
belongs_to :store
belongs_to :account
商店模型中的:
has_many :documents
账户模型中的:
has_many :documents
答案 3 :(得分:0)
首先,您的迁移会抛出错误,应该是
rails g migration AddStoreToDocuments store:references
生成的迁移看起来像
def change
add_reference :documents, :store, index: true, foreign_key: true
end
然后呢,
rake db:migrate
会在store_id
表格中自动创建列documents
,因此在documents.rb
belongs_to :store
belongs_to :account #this you might already be having I suppose