Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.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
Mysql 如何在rails中添加新属性以关联表列_Mysql_Ruby On Rails_Ruby_Ruby On Rails 3.1_Associations - Fatal编程技术网

Mysql 如何在rails中添加新属性以关联表列

Mysql 如何在rails中添加新属性以关联表列,mysql,ruby-on-rails,ruby,ruby-on-rails-3.1,associations,Mysql,Ruby On Rails,Ruby,Ruby On Rails 3.1,Associations,在我的rails应用程序中,我必须为关联表添加一个名为is\u leader的新列 关联表的关系如下所示: has_and_belongs_to_many :analysis_responses, :join_table => "analysis_responses_participants" 以下是参与者详细信息保存到db的代码: organization.people.create(participant) 参与者具有以下值 name: Test User position: b

在我的rails应用程序中,我必须为关联表添加一个名为
is\u leader
的新列

关联表的关系如下所示:

has_and_belongs_to_many :analysis_responses, :join_table => "analysis_responses_participants"
以下是参与者详细信息保存到db的代码:

organization.people.create(participant)
参与者
具有以下值

name: Test User
position: 
birthdate: 
id: 
lead: "1"
如果前导值为1,则对于特定记录,
为_leader
列值应为
1

我想知道如何在rails的关联表中保存
is\u leader


谢谢

如果您需要在联接表上保存属性,则必须使用联接模型而不是HABTM

class Organization
  has_many :analysis_responses
  has_many :people, through: :analysis_responses
end

class AnalysisResponse
  belongs_to :organization
  belongs_to :person
end

class Person
  has_many :analysis_responses
  has_many :organizations, through: :analysis_reponses
end

没有回答您的问题,但是:在Rails中,最好不要在布尔属性的前面加上
is\uu
。其他语言中的这种做法部分是由于方法名称中缺少
支持。因为Rails为布尔属性创建了
方法,所以最好将列命名为
leader
,并使用
leader?检查其值是否为truthy?
@Deefour:非常感谢您的建议。在这种情况下,我将更改itOk,如何将leader属性保存在关联表中?在我的analysis\u response类中,我添加了以下内容:
has\u,并且\u属于\u many:participants,:class\u name=>“Person”,:join\u table=>“analysis\u responses\u participants”
您无法将信息保存到
中的联接表中,该联接表有一个\u属于\u多个
。你必须使用加入模式。非常感谢肖恩。这很有帮助