ruby-on-rails - 虚拟属性 Rails - 未知属性错误

标签 ruby-on-rails ruby ruby-on-rails-4 virtual-attribute

我正在制作一个 Rails 4 应用程序。每个事件 都属于一个用户。每个事件都有很多事件。我希望我可以使用 current_user.incidents.new 创建一个事件,并将事件模型中存在的属性 message 传递给它。在创建时,我希望使用所述 message 创建一个新事件。

这是我的事件模型。

class Incident < ActiveRecord::Base
  # The 'incident' model.
  # Incidents are created by Users (belongs_to :user)
  # Incidents may be public or private.
  # Incidents have many events (identified, fixing, etc.)

  belongs_to :user
  has_many :events
  validates :name, presence: true, length: {maximum: 256}
  validates_presence_of :component
  validates_presence_of :public
  validates_presence_of :user_id

  attr_accessor :message
  validates_associated :message, presence: true

  def message
    Event.find_by_incident_id(self.id).message
  end

  def message=(value)
    self.events.new(message: value, status: self.status)
  end

  private
    def incident_params
      params.require(:incident).permit(:name, :status, :user_id, :message)
    end

end

但是,当我运行 @i = Incident.new(message: 'something') 时,我得到了 ActiveRecord::UnknownAttributeError: unknown attribute 'message' for Incident.

请帮我解决这个问题。

最佳答案

问题是您将值传递给 Incident 的默认 ActiveRecord::new 方法,它不会关心您的 getter、setter 和访问器, 它 goes straight to the columns .

有些人会覆盖或改编 build method可以按照您的要求实现巧妙的逻辑,而不会影响基本的 initialize 方法。

关于ruby-on-rails - 虚拟属性 Rails - 未知属性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32719031/

相关文章:

ruby-on-rails - 连接失败,数据库名称为 '.'

ruby-on-rails - 计算CSV文件的长度(行数)?

Ruby:使用字符串/符号获取/设置对象的属性

ruby-on-rails - 具有多个外键和数据库约束的 Rails 多态关联

ruby-on-rails - 为什么这个带有 post 请求的集成测试失败了?

html - 使静态图像可滚动

ruby-on-rails - 共享部落 sh : indexer: command not found

ruby-on-rails - "TypeError: can' t 添加记录关系时将Symbol转换成String

javascript - Pusher - 将 ruby​​ 添加到 javascript 字符串?

jquery - Zurb 基金会正在让我的 Assets 加载两次