我確定我只是缺少一些簡單的東西,但過去幾天一直在絞盡腦汁。before_save期間的方法錯誤
我有一個預訂和評論表,其中預訂有很多評論。我可以創建「審閱」,但在嘗試定義離開和接收審閱的用戶的角色時會遇到錯誤。
這是我的模特。審查
class Review < ActiveRecord::Base
before_save :define_review_role
after_create :call_update_rating
belongs_to :booking
belongs_to :client, class_name: "User", primary_key: "client_id"
belongs_to :talent, class_name: "User", primary_key: "talent_id"
def define_review_role
if review_sender_id === self.booking.client_id
review_receiver_id = self.booking.talent_id
else
review_receiver_id = self.booking.client_id
end
self.update
end
def call_update_rating
user = User.find(self.review_receiver_id)
if review_receiver_id == self.booking.talent_id
user.update_talent_rating(self.rating)
else
user.update_client_rating(self.rating)
end
user.save
end
end
而且預訂模型
class Booking < ActiveRecord::Base
# Start Validations
validates :amount, format: {with: /(\d{1,3})(\.\d{1,2})?/, :message => "field is invalid. Please enter a correct amount."}
belongs_to :user
belongs_to :client, class_name: "User", primary_key: "client_id"
belongs_to :talent, class_name: "User", primary_key: "talent_id"
has_many :reviews
has_many :sent_reviews, class_name: "Review", primary_key: "talent_id"
has_many :received_reviews, class_name: "Review", primary_key: "client_id"
def client
User.find(client_id)
end
def talent
User.find(talent_id)
end
end
我已經能夠創建審查就好了,經查,我發現了review.review_receiver_id被留爲空白。由於某種原因,define_review_role沒有運行,我嘗試過before_create,after_save,after_create和沒有骰子。
我知道這沒有運行,因爲在檢查時,review_receiver_id被留空。
我也能夠通過review.booking.talent_id和review.booking.client_id訪問信息,因此連接在那裏。我知道我必須失去一些東西,但不知道是什麼。
嘗試將'self.update'更改爲'self.update_attributes(review_receiver_id:review_receiver_id)' – MrYoshiji
'review_sender_id'的用途是什麼?它在哪裏定義? – AbM
我使用receiver_id來顯示用戶評分。我以這種方式創建它,因此與單個預訂相關聯的用戶只能留下消息。 – Aguayma