首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails attr_accessor通过.build()作为参数传递后可被发现

Rails attr_accessor通过.build()作为参数传递后可被发现
EN

Stack Overflow用户
提问于 2015-02-19 00:29:45
回答 1查看 354关注 0票数 0

嗨,我很难通过一个attr_accessor回调获得一个after_create。“MeetingAttendee”是通过父会议模型中的.build()创建的。我有一种感觉,当通过初始化传递attr_accessor时,通过.build()创建MeetingAttendee子对象时会丢失。

如果我通过“after_create”arg,我将有效地防止no_invite方法的触发。希望能在这里接受任何有关Rails回调的复杂知识的教育。

儿童MeetingAttendee:

代码语言:javascript
复制
    class MeetingAttendee < ActiveRecord::Base
      before_create :create_permalink!
      after_create  :send_invitation! if Proc.new { |a| a.no_invite.nil? }
      attr_accessor :no_invite
      belongs_to    :meeting
    end

作为参数传递no_invite attr_accessor值的父会议。

代码语言:javascript
复制
      self.attendees.build(
        first_name:          [attendee_data['first_name'], attendee_data['middle_name']].compact.join(' '),
        last_name:           attendee_data['last_name'],
        attendee_email:      attendee_data['email'],
        profile_picture_url: profile_picture_url,
        no_invite:           true
      )
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-19 00:33:06

您只需要为回调使用正确的语法:

代码语言:javascript
复制
after_create :send_invitation!, unless: Proc.new { |a| a.no_invite }

较短的备选方案

代码语言:javascript
复制
after_create :send_invitation!, unless: :no_invite
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28596644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档