我有以下型號的Rails 3:許多到許多與病情的關係
class Project < ActiveRecord::Base
has_many :project_members
has_many :members, :through => :project_members, :uniq => true,:class_name => "User", :source => :user
has_many :admins, :through => :project_members, :uniq => true, :conditions => ['project_members.admin = ?', true], :class_name => "User", :source => :user
end
class User < ActiveRecord::Base
# References
has_many :project_members
has_many :projects, :through => :project_members
end
和連接表
class ProjectMember < ActiveRecord::Base
belongs_to :project
belongs_to :user
end
的關係似乎工作,但是當我想通過此代碼將管理員添加到項目中
project.admins.push(u)
project.save
(其中u是用戶)它會保存新的關係,但沒有在連接表中將admin設置爲true。
即使我做
project.project_members.first.admin = true
並保存它好好嘗試更新表的屬性項目手動從項目的這種關係,並設置管理員爲true。
我在做什麼錯? (請記住,我與Ruby和Rails共初學者)
我一直在google搜索的最後幾個小時找到一個解決方案,但找不到任何東西:/
不要指望Rails有太多的魔法。在「保存項目時,它不會更新表中的屬性」:保存不級聯(它們只在創建時執行)。 – 2011-04-16 21:15:48