如何通过与其他属性关联使用has_many

时间:2013-06-20 01:45:57

标签: ruby-on-rails ruby-on-rails-3 rails-activerecord

查看关于关联的文档,我设法将我的类设置为使用has_many, :through。但是,我似乎无法找到关于如何实际使用该关联的任何示例。

我的User模型has_many :attendeeshas_many :events, through: :attendees。我的Event模型has_many :attendeeshas_many :users, through: :attendees

参加者模型:

class Attendee < ActiveRecord::Base
  attr_accessible :status
  validates_inclusion_of :status, in: [:performing, :invited, :going, :maybe]

  belongs_to :user
  belongs_to :event

  def status
    read_attribute(:status).to_sym
  end

  def status=(value)
    write_attribute(:status, value.to_s)
  end
end

我尝试使用以下代码:

at1 = Attendee.new(user: u1, event: e1)
at1.status = :invited
at1.save

不出所料,我在userevent时收到了批量分配错误。除了要为attr_accesibleuser声明event之外,似乎也是如此。我将如何在此处使用关联,并设置自定义status属性?

1 个答案:

答案 0 :(得分:0)

绝对不能宣称attr_accessible。这就是你所缺少的。

请记住attr_accessor是另一回事。有关详情,请查看:Difference between attr_accessor and attr_accessible

另请注意,Rails 4中已弃用attr_accessible以支持Strong Parameters,从而有效地将属性的所有白名单从模型移动到控制器。