Rails:表列返回nil(无响应)

时间:2012-08-23 07:33:39

标签: ruby-on-rails model return response

这是我能够解决的上一个问题的延续:Parameters not saving properly (Rails)

但现在我遇到了一个陌生人的问题。虽然我可以获取要保存的参数,但是当我尝试引用它时它没有响应。

模特:

# == Schema Information
#
# Table name: messages
#
#  id             :integer          not null, primary key
#  content        :text
#  sender_id      :integer
#  recipient_list :text
#  created_at     :datetime         not null
#  updated_at     :datetime         not null
#

class Message < ActiveRecord::Base
  attr_accessible :content, :sender_id, :recipient_list
  attr_reader :recipient_list #necessary for jquery-token-fields
  serialize :recipient_list, Array

  validates :content, presence: true
  validates :sender_id, presence: true

  def recipient_list=(ids) #necessary for jquery-token-fields
    recipient_list = ids.split(",")
    super(recipient_list)
  end
end

对象:

#<Message id: 60, content: "foobar123", sender_id: 1, recipient_list: ["1", "2"], created_at: "2012-08-23 06:40:00", updated_at: "2012-08-23 06:40:00">]

查看:

<%= Message.find_by_id(60).content %>
<%= Message.find_by_id(60).recipient_list %>

结果是对内容的调用按预期返回:“foobar123”但是,​​对recipient_list的调用仅返回nil。尽管那里显然有价值。我怀疑recipient_list =(ids)方法可能会覆盖@ message.recipient_list本来会做的通常功能。我至少在正确的球场吗?这是怎么回事?

1 个答案:

答案 0 :(得分:1)

您在此行重新定义了使用getter的默认recipient_list方法:

attr_reader :recipient_list #necessary for jquery-token-fields

我认为你必须删除它。那一切都应该没问题。

我不知道你的评论是什么意思,你的模型有所有表格列的getter和setter。