레일에 중첩 된 개체가 있습니다. 사용자 -> has_many : 작업 -> has_one : 위치.자식 개체의 값을 얻는 방법
어제, 위치 값을 작업에 연결하는 데 문제가 있다고 생각했지만 지금은 출력 값도 표시 할 수 없다는 것을 알았습니다.
나는 나에게 주소 필드를 줄 것이다
<%= task.locations.address %>
레일을 사용하는 경우
--- !ruby/object:Location attributes: id: "1" address: "testing address" city: "chicago" attributes_cache: {} changed_attributes: {} etc. etc. etc.그래서 내가 생각
<%= for task in @user.tasks %> <%= debug task.locations %> <% end %>
출력 디버그를 통해 출력을 얻을 수 있습니다. 하지만 난
undefined method 'address' for nil:NilClass
내가 뭘 잘못했는지에 대한 제안? 모델을 포함
---------- 업데이트 ---------------- 작업에 대한 나의 모델은 & 위치를
class Task < ActiveRecord::Base attr_accessible :user_id, :date, :description, :location_id belongs_to :user has_one :location end class Location < ActiveRecord::Base attr_accessible :address, :city, :state, :zip has_many :tasks end
나는 당신이 무엇을보고 있는지보고 내 모델을 보여주기 위해 질문을 업데이트했습니다. 불행히도이 방법으로는 문제가 해결되지 않습니다. 중첩 모델을 사용할 수 있는지, 레일이 예상하는 레일 위치 또는 위치를 보여줄 수 있습니까? – pedalpete
당신의 작업은 'has_one' 위치입니까, 아니면'belongs_to' 위치입니까? 당신의 작업이 테이블에 location_id를 가지고 있다면, 그것은'belongs_to' 위치입니다. 당신은 당신의 관계 모델을'user.tasks.each {| task | task.location}' – christianblais
Phew !! 그건 오래지만, 당신은 그것을 해결! 나는 길을 잃었고 물건이 거의 작동하는 곳으로 돌아갈 수 없었다. (새로운 지점을 만드는 것을 잊어 버렸다.) 어쨌든, 당신은 'belongs_to'에 대해 옳습니다. 그것이 나에게 이상하게 보이는 이유는 위치 테이블이 별도의 위치 그룹이며 사용자가 위치에 대한 연관성을 만들고 있기 때문에 작업에 실제로 위치가 '속하지'않으므로 작업에 위치가 있다고 생각했습니다. 나는 has_and_belongs_to_many가 필요할지도 모른다. 동일한 위치는 많은 다른 업무에 속할 것입니다. 그 확인은? – pedalpete