我在这些通知上有notices
和comments
。评论也是课堂通知。提交通知后,如果是原始通知,则commentee_id
将为空白。如果通知是对另一个通知的评论,则其commentee_id
将是其评论通知的ID。
notices_controller.rb:
def create
@character = Character.find_by(callsign: params[:callsign])
@notice = @character.notices.build(notice_params)
if @notice.save
.
.
end
end
def notice_params
params.require(:notice).permit( :content, :picture, :latitude, :longitude,
active_comment_relationship_attributes: [:commentee_id] )
end
notice.rb:
belongs_to :character
has_one :active_comment_relationship, class_name: "Commentrelationship",
foreign_key: "commenter_id",
dependent: :destroy
has_one :supernotice, through: :active_comment_relationship, source: :commentee
accepts_nested_attributes_for :active_comment_relationship
before_validation :create_commentee
private
def create_commentee
if !commentee_id.blank?
create_active_comment_relationship(commentee_id: :commentee_id)
end
end
新通知模型未成功创建。我收到错误消息:
undefined local variable or method `commentee_id' for #<Notice:0x0000010c3a4708>)
调用create_commentee
时,新的@notice
实例已在内存中创建但尚未保存到数据库中(create_commentee
是before_validation
回调)。在此阶段,您如何正确访问commentee_id
?
这不是(!commentee_id.blank?
):
def create_commentee
if !commentee_id.blank?
create_active_comment_relationship(commentee_id: :commentee_id)
end
end
也不是这个(commentee_id
不是:commentee_id
):
def create_commentee
if !commentee_id.blank?
create_active_comment_relationship(commentee_id: commentee_id)
end
end
有所不同。
答案 0 :(得分:0)
至少有一个问题是你这样做:
if !:commentee_id.blank?
......当你应该这样做时:
if !commentee_id.blank?
:commentee_id
是一个符号,它就像一种特殊的字符串,它永远不会是空白的(好吧,除非它是:""
)。您想调用commentee_id
方法,即没有:
)。
P.S。如果你想稍微习惯一点,我建议改为:
if commentee_id.present?