0

查看有关关联的文档,我设法将我的类设置为使用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

不出所料,我得到一个质量分配错误userand event。似乎除了声明的attr_accesible意义user之外event。我将如何在这里使用关联,并设置自定义status属性?

4

1 回答 1

0

声明绝对不是题外话attr_accessible。这就是你所缺少的。

记住attr_accessor是别的东西。有关这方面的更多信息,请查看:attr_accessor 和 attr_accessible 之间的区别

还要记住,attr_accessible在 Rails 4 中已经弃用了强参数,有效地将所有属性白名单从模型移动到控制器。

于 2013-06-20T01:53:13.367 回答