如何为杂志订阅添加新读者?
基本上,我使用了一个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 class magazinerreader class Reader has_many :magazine_readers
has_many :readers, through: :magazine_reader
belongs_to :magazine
belongs_to :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