Ruby on rails -如何添加到多对多关联



如何为杂志订阅添加新读者?

基本上,我使用了一个many_to_many关联——我有一个readers模型、一个杂志模型和一个magazines_readers连接表。

create_table :magazines do |t|
t.string :title
t.datetime :created_at
t.datetime :updated_at
end
create_table :readers do |t|
t.string :name
t.datetime :created_at
t.datetime :updated_at
end
create_table :magazines_readers, :id => false do |t|
t.integer :magazine_id
t.integer :reader_id
end

现在,如果我这样做:

magazine = Magazine.create(:title => "The Ruby Language Journal")
matz = Reader.find_by_name("Matz")
magazine.readers << matz
matz.magazines.size # => 1

我可以将Matz添加到杂志订阅,但我如何在视图+控制器中将Matz添加到rails中的订阅?

换句话说,在控制台中我可以添加matz -但这在应用程序中是如何完成的?代码是什么样子的?是在create动作中吗?

请帮我澄清一下,谢谢!

模型

class Magazine

   has_many :magazine_readers
   has_many :readers, through: :magazine_reader

结束

class magazinerreader

 belongs_to :magazine
 belongs_to :reader

结束

class Reader

 has_many :magazine_readers
 has_many :magazines, through: :magazine_reader
结束

你的模型应该是这样的

magazine.rb

class Magazine < ActiveRecord::Base
   has_many :magazine_readers
   has_many :readers, through: :magazine_reader
end

reader.rb

class Reader < ActiveRecord::Base
   has_many :magazine_readers
   has_many :magazines, through: :magazine_reader
end

magazine_reader。rb文件,这是您的连接表。在这里你还可以添加其他属性

class MagazineReader < ActiveRecord::Base
   belongs_to :magazine
   belongs_to :reader
end

更多信息请参考此链接

你只需要做:

class Magazine < ActiveRecord::Base
  has_and_belongs_to_many :readers
end
class Reader < ActiveRecord::Base
  has_and_belongs_to_many :magazines
end

更多信息:http://guides.rubyonrails.org/association_basics.html#the-has-and-belongs-to-many-association

相关内容

  • 没有找到相关文章

最新更新