Activerecord Rails 4多对多关系
我有一个应用程序,它有两个需要多对多关系的模型。我最初试着使用has_和(你属于)(你属于)很多(你属于)(你属于)(你属于)很多(你属于。在网上搜索之后,我确信这不是我所需要的。所以,我换成了一个有很多通过的方法。然而,这也不起作用。我现在对这个问题感到非常困惑。我已经把它撕了很多次,并尝试了一个又一个教程,但都没有用 我试图连接的模型是Message和Author。在我最近的尝试中,我创建了一个名为Authoring的连接模型(带有相应的表)。这是我的密码: message.rbActiverecord Rails 4多对多关系,activerecord,ruby-on-rails-4,many-to-many,has-many-through,Activerecord,Ruby On Rails 4,Many To Many,Has Many Through,我有一个应用程序,它有两个需要多对多关系的模型。我最初试着使用has_和(你属于)(你属于)很多(你属于)(你属于)(你属于)很多(你属于。在网上搜索之后,我确信这不是我所需要的。所以,我换成了一个有很多通过的方法。然而,这也不起作用。我现在对这个问题感到非常困惑。我已经把它撕了很多次,并尝试了一个又一个教程,但都没有用 我试图连接的模型是Message和Author。在我最近的尝试中,我创建了一个名为Authoring的连接模型(带有相应的表)。这是我的密码: message.rb h
has_many :authorings
has_many :authors, through: :authorings
author.rb
has_many :authorings
has_many :messages, through: :authorings
authoring.rb
belongs_to :message
belongs_to :author
消息\u controller.rb
def messages_params
params.require(:message).permit(:title, :summary, :date, :duration, :youversion, :hours, :minutes, :seconds, :authors)
end
我的留言表格:
<%= f.label :speakers %><br />
<%= collection_select(:authors, :authors, Author.all, :id, :name, {}, {:multiple => true, :size => 10}) %>
表单显然可以识别表单中的作者,但不会将他们保存在数据库中。什么是我的断开?请帮忙
谢谢
作者
记录未被创建,因为控制器希望作者
出现在消息
中参数
散列中的键值中,但如果您注意到日志中的参数
散列
参数:{“utf8”=>“✓",
“真实性令牌”=>“OcLeke/eRRzwApoMSgQF81kBCm7TaGxW1PoVAUgEcvo=“,
“消息”=>{…},“作者”=>{…},“提交”=>“我完成了”,
“id”=>“1”}
您将看到authors
在params
散列中作为一个完全独立的键出现,这就是它被忽略的原因
您需要做的是将作者与表单
对象关联,而不是使用collection\u select
您需要使用f.collection\u select
,如下所示。在f.collection\u select
中指定第一个参数为:author\u id
<%= f.collection_select(:author_ids, Author.all, :id, :name, {}, {:multiple => true, :size => 10}) %>
<%= f.collection_select(:author_ids, Author.all, :id, :name, {}, {:multiple => true, :size => 10}) %>
def messages_params
params.require(:message).permit(:title, :summary, :date, :duration, :youversion, :hours, :minutes, :seconds, :author_ids => [])
end