I가 다음과 같은 모델레일 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
내가 원하는 때 관계는 제대로 작동하지만, 이 새로운 저장 (u는 사용자입니다)이 코드
project.admins.push(u)
project.save
를 통해 프로젝트 관리자를 추가 관계를 설정하지만 조인 테이블에서 admin을 true로 설정하지 마십시오.
내가 수동으로
project.project_members.first.admin = true
을하고는 테이블의 속성을 업데이트 넣은 사람은 아니다 프로젝트를 저장하여 true로이 프로젝트의 관계와 설정 관리자를 검색 할 경우에도 마찬가지입니다.
내가 뭘 잘못하고 있니? (나는 루비와 레일을 가지고있는 초심자 다.)
나는 지난 시간 동안 해결책을 찾기 위해 인터넷 검색을 해왔지만 아무것도 찾을 수 없었다 :/
레일스에서 너무 많은 마법을 기대하지 마십시오. "프로젝트 저장시 테이블의 속성을 업데이트하지 않습니다": 저장은 캐스케이드하지 않습니다 (생성시에만 수행). –