2013-03-04 2 views
0

그래서, 이것은 :Rails Active Record : 조인 결과로부터 오브젝트의 하위를 수정하고 저장 하시겠습니까?

p = Person 
.joins('join organization o on o.id = organization_id') 
.where('o.id' => 1) 
.select('person.*') 
.first! 

p.name = 'hi!' 
p.save! 

작품 사람의 이름을 저장, 예상대로. 그러나, 나는이 할 것입니다 방법 :

p.organization.name = 'bye!' 
p.save! 

나는 조직 필드를 매핑 할 수있는 권리 투사를 알아낼 수 없습니다를 (또는 가능하다면). 나는 '*'와 'organization.name'을 "person.organization.name" '으로 시도했다. has_one을 통해 : 또는 has_and_belongs_to_many, 및 레일을 통해 그것에 의해 가입 자체를하고 함께 수업을 모두 연결됩니다

답변

1

당신이하고있는 일을하기 위해서는 belongs_to :organization 연관에서 autosave 옵션을 true로 설정해야합니다.

belongs_to :organization, autosave: true 

하거나

p.organization.name = 'Org Name' 
p.organization.save 
+0

감사합니다, 그건 내가 잃어버린 것. –

0

당신은 has_one belongs_to has_many에게 has_many를 사용하여 Person 클래스에 연관을 선언해야합니다. 두 모델 사이의 연결이 있다는 것을, 우리가 [..] 레일을 말할 수

액티브 레코드 협회와 :

나를 여기 레일 가이드의 섹션을 붙여 보자. 난 당신이 여기에 완전한 가이드를 읽어 제안

@order = @customer.orders.create(:order_date => Time.now) 

: 쉽게 특정 고객을위한 새로운 질서를 만들어,이 변경으로

class Customer < ActiveRecord::Base 
    has_many :orders, :dependent => :destroy 
end 

class Order < ActiveRecord::Base 
    belongs_to :customer 
end 

됩니다 : 여기에 고객과 주문을 설정하는 수정 된 코드는 http://guides.rubyonrails.org/association_basics.html

+0

아니, 당신이 오해 조직에 저장 전화, 나는이 상황에 대해서 이야기하고 : http://stackoverflow.com/a/639844/2130025 –

관련 문제