Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 设置Rails模型和关联_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 3.1 - Fatal编程技术网

Ruby on rails 设置Rails模型和关联

Ruby on rails 设置Rails模型和关联,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.1,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.1,我有一个公司表和一个状态代码表 一个公司只能有一个状态代码 COMPANIES id int PK name varchar status_code_id int FK STATUS_CODES id PK name varchar (Live, Inactive, Deleted) 我正试图用以下模型/关联在rails中设置此功能 class Company < ActiveRecord::Base has_one :status_code end class

我有一个公司表和一个状态代码表 一个公司只能有一个状态代码

COMPANIES
  id int PK
  name varchar
  status_code_id int FK

STATUS_CODES
id PK
name varchar   (Live, Inactive, Deleted)
我正试图用以下模型/关联在rails中设置此功能

class Company < ActiveRecord::Base
  has_one :status_code
end

class StatusCode < ActiveRecord::Base
  belongs_to :company
end
class公司
问题发生在
所属的\u:company
,它需要
状态\u code
表中的外键
company\u id

我基本上希望所有状态代码都在一个表中,所以如果我需要更改状态代码名称,我只更改一次,所有公司都会显示新更新的状态代码名称


我可以用我的数据库表布局设置rails吗?或者有更好的方法吗?

我相信在这种情况下,您需要StatusCode拥有许多公司。这样,一旦您更改状态代码,所有公司都会显示新更新的状态代码名称

class Company < ActiveRecord::Base
  belongs_to :status_code
end

class StatusCode < ActiveRecord::Base
  has_many :companies
end
class公司

当然,在companys表中需要status\u code\u id外键。

一般的经验法则是,包含外键的关联方应该有
属于:other\u model
,反之应该有
has\u many

谢谢,rails是如何做到这一点的?状态代码有很多:公司一开始可能读得不正确,但如果你从面向对象的角度来考虑,它并没有什么问题,你只是为你想要实现的目标编写代码。这也不违背“rails方式”,因为它是一个简单的有很多关联的方法。