Ruby on Rails has_many DB Relation

时间:2016-01-22 08:21:32

标签: ruby-on-rails ruby-on-rails-4 relationship

假设我有三个数据库表,例如:

用户:

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

我如何才能达到此解决方案?

由于

1 个答案:

答案 0 :(得分:0)

首先,除非您有特殊原因不使用rails约定,否则表中的主键应称为id,而不是post_idcompany_id等。这将发生如果您使用轨道生成器生成模型,则自动生成(例如rails g model user name emailrails 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,但无论如何都是错误的。