我已经迁移了tags_words
class CreateTagsWords < ActiveRecord::Migration
def change
create_table :tags_words, id: false do |t|
t.references :tag
t.references :word
end
add_index :tags_words, :tag_id
add_index :tags_words, :word_id
end
end
模型词和标签:
class Word < ActiveRecord::Base
attr_accessible :namelanguage1, :namelanguage2, :tags_attributes
has_and_belongs_to_many :tags
def self.search(search)
if search
find(:all, :conditions => ['namelanguage1 LIKE ?', "%#{search}%"])
else
find(:all)
end
end
end
class Tag < ActiveRecord::Base
attr_accessible :name, :language_user_id
has_and_belongs_to_many :words
def self.search(search)
if search
find(:all, :conditions => ['name LIKE ?', "%#{search}%"])
else
find(:all)
end
end
end
当我将标签添加到单词然后保存它并不保存在db中时(当我在rails console Words.find(1).tags
中写入时,我得到空数组。
答案 0 :(得分:2)
您需要使用<< ActiveRecord方法添加到您拥有的相应馆藏中:
#app/controllers/words_controller.rb
def add_tag
word = Word.find(params[:id])
tag = Tag.find(params[:id])
word.tags << tag
end
您的问题可能是由于您未正确保存数据或未正确调用数据而造成的
<强>更新强>
如果您想在创建新word
后向tags
的{{1}}集合添加标签,则可以执行以下操作:
word