2010-12-27 2 views
0

기본적으로 요청 및 숙박 사이의 가입 테이블 역할을하는 알림이라는 모델이 있습니다. 내 요청 컨트롤러에 내 "만드는"방법에가입 테이블에 새 레코드 만들기

, 나는이 :

# find associated accommodations, currently matching: location 
    @accommodations = Accommodation.where('location' => :location) 
    @accommodations.each do |accommodation| 
     @notification = @request.notification.build('accommodation_id' => accommodation.id).save 
    end 

새로운 알림 기록을 작성하지 않는 것. 여기서 내가 뭘 잘못하고 있니?

모델/

class Notification < ActiveRecord::Base 
    attr_accessible :accommodation_id, :request_id 
    has_one :request 
end 

모델 notification.rb accommodation.rb

class Accommodation < ActiveRecord::Base 
    validates_presence_of :title, :description, :thing, :location, :spaces, :price, :photo 
    attr_accessible :photo_attributes, :title, :description, :thing, :location, :spaces, :price 
    has_one :photo 
    has_many :notifications 
    belongs_to :user 
    accepts_nested_attributes_for :photo, :allow_destroy => true 
end 

모델// request.rb

class Request < ActiveRecord::Base 
    attr_accessible :firstname, :lastname, :email, :phone, :datestart, :dateend, :adults, :children, :location, :status 
    validates_presence_of :firstname, :lastname, :email, :phone, :datestart, :dateend, :children, :adults, :location 
    has_many :notifications 
end 
+0

실제로 가입 하시겠습니까? 방금 코드를 게시했습니다 ... – sethvargo

+0

죄송합니다 - 아마 내 질문이 명확하지 않을 수 있습니다. 그것은 첫 번째 코드 블록과 두 번째 코드 블록 사이에 뭉개졌습니다! "새로운 알림 레코드를 만드는 것 같지 않습니다. 내가 여기서 뭘 잘못하니?" –

답변

0

컨트롤러에 @request 또는 : 위치를 정의하지 마십시오. 그것은 Request 객체의 가정 : 그냥 @AnomalousThought 같은

@notifications = Array.new 

@accommodations = Accommodation.where('location' => :location) 
Accommodation.find_each(:conditions => { 'location' => :location }) do |a| 
    notification = @request.notifications.create('accommodation_id' => a.id) 
    @notifications << notifications 
end 

말했다 :

제공 예에 대해 말할 수있는 많은있다, 나는 구현이 완전히 가난한 생각합니다. 그러나 의 질문과 관련이없는 알림 기록이 저장되지 않는 이유는 무엇입니까?

+0

더 나은 구현은 무엇입니까? 이것은 작동합니다 (고마워요!) - 내가하려는 것은 조건 (현재 단지 : location-- 실제로 @ request.location이어야 함 ...)과 일치하는 각 숙박 시설 레코드에 대한 새로운 알림 레코드를 만드는 것입니다. 이 작업을 수행하는 더 좋은 방법이 있다면 알려 주시기 바랍니다. 나는 여기서 배우기를 아주 좋아합니다. –

+0

실제 문제를 좀 더 자세히 설명해 주시겠습니까? 통지, 숙박 및 요청이 정확히 무엇인지 확신 할 수 없습니다. 정확히 관계가 무엇이며 어떻게 사용할 계획입니까? 나는 너에게 더 나은 응답을 줄 수있다 ... – sethvargo

+0

Thanks Seth. 저는 침대와 아침 식사 업체를위한 앱을 만들고 있습니다. 숙박 시설은 숙박 시설 목록입니다. 숙박 시설은 이용 가능하거나 이용 가능하지 않을 수 있으며, 이용하지 않을 수있는 방법이 없기 때문에 방문자로부터 먼저 요청을 수락 한 다음 각 숙박 시설에 대한 통지를 작성합니다. 알림은 숙소 소유자 (사용자)에게 전자 메일을 전송 한 다음 수용하거나 거부 할 수 있습니다. 방문자는 각 수용을 위해 전자 메일을 받고 원하는 것을 선택할 수 있습니다. 이것이 내가 "조인"테이블을 가지고있는 이유입니다. 하나의 요청에 여러 개의 알림이있을 수 있습니다. –

1

@request.notification.build은 요청 has_many 알림 이후 @request.notification.build이어야합니다.

또한 @notification을 .save가 반환하는 값으로 설정하면 true 또는 false이됩니다. @notification이 실제 개체를 가리 키려면 create을 사용하는 것이 좋습니다. 또한 모든 반복에 대해 변수 @notification을 계속 덮어 쓰는 것을 알고있을 것입니다. 원하지 않을 수도 있습니다.

제공된 예제에 대해 언급해야 할 것이 많습니다. 구현이 완전히 열악하다고 생각합니다. 그러나 이는 알림 레코드가 저장되지 않는 이유와 관련이 없습니다.

+0

내가 답변을 게시했지만, 나는 완전히 동의했기 때문에 귀하의 투표를 확정하고 마지막 단락을 추가했습니다. 제공된 예제에 대해 언급해야 할 것이 많이 있습니다. 구현이 완전히 가난하다고 생각합니다. 그러나 이는 알림 레코드가 저장되지 않는 이유와 관련이 없습니다. – sethvargo

관련 문제