- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我确定我只是遗漏了一些简单的东西,但过去几天我一直在为此绞尽脑汁。
我有一个预订和评论表,其中预订有很多评论。我可以创建评论,但在尝试定义离开和接收评论的用户角色时遇到错误。
这是我的模型。评论
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 访问信息,所以连接就在那里。我知道我一定错过了什么,但不知道是什么。
最佳答案
您的方法 define_review_role
正在运行,您只编写了糟糕的代码。它应该看起来像这样
def define_review_role
if review_sender_id === self.booking.client_id
self.review_receiver_id = self.booking.talent_id
else
self.review_receiver_id = self.booking.client_id
end
end
如果您尝试在没有self
的情况下赋值,则该值将赋给新创建的本地方法,而不是您的Report
类的属性。
您也不能在此方法的末尾调用 save
或 update
,因为您正在使用 before_save
回调调用它。方法 save
和 update
再次触发它,方法将再次被调用,你创建无限循环。
关于ruby-on-rails - before_save 期间的方法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29802672/
我的模型中有一个 before_save 回调,它在将 2 个字段保存到数据库之前对其进行加密。 class Account < ActiveRecord::Base before_save :e
我正在尝试在用户模型中strip变量Username的空格。 我正在使用 before_save do self.username.strip! end 但这似乎不起作用,我是否缺少某些东西? 最
好吧,这件事快把我逼疯了。我有一个看起来大致像这样的小方法: class PdfResult < ActiveRecord::Base attr_accessible :press_ready_u
我确定我只是遗漏了一些简单的东西,但过去几天我一直在为此绞尽脑汁。 我有一个预订和评论表,其中预订有很多评论。我可以创建评论,但在尝试定义离开和接收评论的用户角色时遇到错误。 这是我的模型。评论 cl
我正在运行 Ruby 2.1 和 Mongoid 5.0(没有 Rails)。 我想在 before_save 回调中跟踪嵌入字段是否已更改。 我可以使用 document.attribute_cha
我的自定义验证似乎在我的 before_save block 之前运行,这对我来说很奇怪。我知道 before_validation,但我正在尝试测试我的自定义验证器,所以 before_valida
我正在学习 Michael Hartl 的 RoR 教程,它涵盖了密码加密的基础知识。这是当前的用户模型: class User true, :length
我有一个 Organization带 iv 的模型属性(property)。如果iv没有设置,它是随机的,但它必须是唯一的。首先想到的是下面的回调。它不能用作 valid?将尝试重新验证。 class
我有两个模型,一个父模型和一个子模型(如下所述)。子模型有一个 before_save 回调来处理一些外部逻辑,如果遇到任何错误,回调会使正在保存的模型失效。 class Parent true
我想在 before_save 上添加一个钩子(Hook)。 验证发生在调用“before_save”之前,因此我将其移至 before_validation :on =>:save。 现在的问题是,
我有两个模型:折扣拥有且属于许多企业。 我想验证折扣始终至少有一项业务,以及另一个条件(例如有效?)。我尝试了以下方法: class Discount :validate_publish_statu
如果许多其他属性不为 0,我正在使用 before_save 回调方法将属性设置为 true。当我更新我的模型但未设置额外属性时调用回调。我认为这可能是因为该属性没有传递给更新方法。我该如何解决这个问
无法弄清楚。不知道为什么没有保存记录。方法被正确调用,所有字段都存在,逻辑正确。这是我的模型代码: class Mine < ActiveRecord::Base belongs_to :shop v
这是我的like.rb模型 class Like "created_at DESC" belongs_to :post belongs_to :user def increment_po
当您向 Controller 提交表单以保存在 ActiveRecord 中时,您可以通过 @foo.field = 'bar' 添加缺失的字段。我想对嵌套属性做同样的事情,但我不知道该怎么做。 我正
我有两个模型: class Game before_save :update_teacher teacher end def update_teacher teacher.
努力在父记录的 before_save 回调中修改子记录。 子记录是Photo有一个名为 main 的属性这是一个 bool 值。 父记录是Deal那has_many :photos 修改记录的表单是
与其说这是一个如何做的问题,不如说是一个为什么的问题。考虑下面的示例,我在其中尝试在保存前设置默认电子邮件。 class Organization < ActiveRecord::Base bef
我正在创建一个插件,但很难定义调用我刚刚定义的实例方法的 before_save 过滤器。这是一个快速示例: module ValidatesAndFormatsPhones def self.i
我的 ActiveRecord 模型有一个回调,如下所示: before_save :sync_to_external_apis def sync_to_external_apis
我是一名优秀的程序员,十分优秀!