如何在杂志订阅中添加新读者?
基本上,我使用的是multi_to_many关联 - 我有一个读者模型,一个杂志模型和一个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添加到杂志订阅中,但如何在视图+控制器的rails中将matz添加到订阅中?
换句话说,在控制台中我可以添加matz - 但是如何在应用程序中完成?代码会是什么样的?它会在创作动作等......
请帮我解决这个问题,谢谢!
答案 0 :(得分:3)
<强>模型强>
class Magazine&lt;的ActiveRecord ::基
has_many :magazine_readers
has_many :readers, through: :magazine_reader
端
class MagazineReader&lt;的ActiveRecord ::基
belongs_to :magazine
belongs_to :reader
端
class Reader&lt;的ActiveRecord ::基
has_many :magazine_readers
has_many :magazines, through: :magazine_reader
端
答案 1 :(得分:2)
你的模特应该是这样的
<强> 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
有关详细信息,请参阅此link
答案 2 :(得分:1)
你只需要这样做:
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