我有三个表:一个 book 表,一个 tag 表,一个保存二者关系的表; 新增 book 记录,会新增 tag,保存二者关系的那个表如何做到和 java web 一样会自动新增记录保存二者关系, 在线等,谢谢指点~
http://guides.rubyonrails.org/association_basics.html#the-types-of-associations
读一遍就知道了
#1 楼 @blacktulip 表我晓得,现在是页面操作,在生成的时候,第三个关系表是如何操作的,java 好像不用操作关系表~
手机上没法打完整代码示例,不用操作表,就 tags.each { |tag| book.tags < tag unless book.tags.include? tag } 这样子
#3 楼 @blacktulip 那等你有空的话帮看一下吧,我自己也再看一下 API,谢谢呢
class Book < ActiveRecord::Base has_many :book_tags has_many :tags, through: :book_tags end class Tag < ActiveRecord::Base has_many :book_tags has_many :books, through: :book_tags end class BookTag < ActiveRecord::Base belongs_to :tag belongs_to :book end book = Book.create tag = Tag.create book.tags << tag || tag.books << book
标签可以和多个 model 关联,比如音乐也可以用上标签,我觉得可以考虑用上多态,并且建立一张中间表,比如 taggings,对于 taggings 这张表可以使用多态,当说明 tags 和 books 或者 music 关系时候,用 source_type 加以区分,比如 has_many :books, :through => :taggings, :source => :taggable, :source_type => "Book"
#5 楼 @angelfan 我用的也是类似的,多谢指教!
#6 楼 @yaocanwei 这个我可能还没用到,希望以后用到,多谢指点!