我期待設置一個用戶可以創建帖子並標記該帖子的關係。該帖子和那些標籤屬於該用戶。我的關聯有什麼問題?
我一直在試圖調試這最後三天。我不知道爲什麼當我保存我的帖子時,user_id沒有填充到標籤模型中。我將user_id添加到Tag模型中。
對於過多的代碼,我提前道歉。
User - has_many posts; has_many標籤
後 - belongs_to用戶; has_many標籤; has_many標籤通過標籤
標籤 - 有很多標籤; has_many通過標籤發帖; belongs_to用戶
Tagging - belongs_to post; belongs_to的標籤
ActiveRecord::Schema.define(:version => 20121031012555) do
create_table "posts", :force => true do |t|
t.integer "user_id"
t.string "summary"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "taggings", :force => true do |t|
t.integer "post_id"
t.integer "tag_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
add_index "taggings", ["post_id"], :name => "index_taggings_on_post_id"
add_index "taggings", ["tag_id"], :name => "index_taggings_on_tag_id"
create_table "tags", :force => true do |t|
t.string "name"
t.integer "user_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "users", :force => true do |t|
t.string "username"
t.string "email"
t.string "crypted_password"
t.string "password_salt"
t.string "persistence_token"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "role"
end
end
在樁模型:
def tag_ids=(tags_string)
self.taggings.destroy_all
tag_names = tags_string.split(",").collect{|s| s.strip.downcase}.uniq
tag_names.each do |tag_name|
tag = Tag.find_or_create_by_name(tag_name)
tagging = self.taggings.new
tagging.tag_id = tag.id
end
end
你可以使用'對於has_and_belongs_to_many'關係。這可以幫助你避免這種虛假摧毀。 – ck3g
您在分配'tagging.tag_id = tag.id'後不保存'taggings'。我沒有看到你想要保存的地方'user_id' – ck3g
@ ck3g這是他爲此所做的要點:https://gist.github.com/4025471 –