公司和员工之间的Rails协会是否有效?

时间:2016-02-01 05:50:46

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

我正在编写一个基本的CRM应用程序来学习Ruby on Rails 4.2,我有一对奇怪的关联(或者可能不那么奇怪)。如果这是直接的SQL和另一个平台,它将是直截了当的,但我不确定我是否在ROR中正确地做到了。

业务要求是每个公司都有一个或多个用户。很简单。 (以下模型的相关部分。)

user.rb    
belongs_to :company

company.rb
has_many :users

另一个要求是每个公司可以有一个主要用户。我需要能够在公司索引和展示视图中引用用户的信息(姓名,电子邮件等)。这是我有点不确定的地方。这些模型应该是这样的(它对我没有意义,但我不能想到另一种方式)?:

user.rb
belongs_to :company

company.rb
has_many :users 
has_one :user

这是一个缩写的架构。公司中的user_id是用于存储"主要联系人":

的FK
create_table "companies", force: :cascade do |t|
    t.string   "companyname"
    t.integer  "user_id"
end

create_table "users", force: :cascade do |t|
    t.string   "username"
    t.string   "email"
    t.string   "phone"
    t.integer  "company_id"
end

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

moment(checked_date, DATE_FORMAT).format(DATE_FORMAT) === checked_date

以上型号是正确的。我认为对于公司的主要用户,您可以再使用一个模型,例如primary_user_membership.rb

{{1}}

答案 1 :(得分:0)

user.rb    
belongs_to :company

company.rb
has_many :users
**belongs_to :primary_user, class_name: "User"**

在公司中你应该有primary_user_id列。您还可以在用户上定义has_one,如下所示:

user.rb    
belongs_to :company
**has_one :primary_company, class_name: "Company", foreign_key: "primary_user_id"**

company.rb
has_many :users
belongs_to :primary_user, class_name: "User"

答案 2 :(得分:-1)

根据您的信息,您的模型是正确的。

user.rb    
belongs_to :company

company.rb
has_many :users

您可以Company.first.users查看所有首批公司的用户。

假设用户1是公司1的主要用户,在rails控制台中,您可以通过执行Company.first.users.first

进行检查

您还可以执行以下操作检查用户1的信息: -

user1 = Company.first.users.first
user1.username

生成用户模型时,您可以执行:rails g model User username email phone company:belongs_to

您的架构模型应如下所示: -

create_table "companies", force: :cascade do |t|
    t.string   "companyname"
end

create_table "users", force: :cascade do |t|
    t.string   "username"
    t.string   "email"
    t.string   "phone"
    t.integer  "company_id"
end