假设我有三个数据库表,例如:
用户:
------------------------------------
user_id | name | email |
------------------------------------
1 | xyz | x@gmail.com |
------------------------------------
公司:
------------------------------------
company_id | user_id | c_name |
------------------------------------
1 | 1 | abc |
------------------------------------
帖子:
------------------------------------
post_id | company_id | post_title |
------------------------------------
1 | 1 | etc |
------------------------------------
这是我的数据库。
现在我首先需要注册然后创建一个或两个或三个公司 user_id然后创建post到company_id。
现在在用户下创建公司也创建帖子,但不在我的代码下面的帖子表中更新company_id:
用户模型:
has_many :companies
公司模式:
has_many :posts, :foreign_key => :company_id
belongs_to :user
发布模型:
belongs_to :user
belongs_to :company
我如何才能达到此解决方案?
由于
答案 0 :(得分:0)
首先,除非您有特殊原因不使用rails约定,否则表中的主键应称为id
,而不是post_id
,company_id
等。这将发生如果您使用轨道生成器生成模型,则自动生成(例如rails g model user name email
,rails g model company c_name user:references
等。)
其次,如果我理解你想要实现的目标,你应该这样做:
用户模型
class User < ActiveRecord::Base
has_many :companies
# Rest of your code
end
公司模式
class Company < ActiveRecord::Base
has_many :posts
belongs_to :user
# Rest of your code
end
发布模型
class Post < ActiveRecord::Base
belongs_to :company
# Rest of your code
end
如果您遵循这些标准,则无需在代码中指定任何:foreign_key
,但无论如何都是错误的。