保存模型时,关联"无效"

Dav*_*acs 6 ruby-on-rails

我有一个俱乐部模型和一个会员模型,它们通过会员模型关联.换一种说法

class Club < ActiveRecord::Base
  has_many :members, :through => :memberships
end

class Member < ActiveRecord::Base
  has_many :clubs, :through => :memberships
end
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试创建新成员并将其添加到俱乐部时,我收到一条错误消息,说俱乐部无效.

> club = Club.find(1)
> member = Member.new(:name => 'Member Name')
> member.clubs << club
> member.save
Run Code Online (Sandbox Code Playgroud)

member.save陈述将返回false.看一下member.errors.messages,我发现

> member.errors.messages
@messages={:clubs=>["is invalid"]}
Run Code Online (Sandbox Code Playgroud)

真奇怪的是,我的开发环境(使用sqlite3)不会发生这种情况,但仅限于使用mySQL进行的EngineYard部署.

Dav*_*acs 8

我刚刚发现了自己的问题.我的俱乐部类包含一个虚拟属性:密码,仅在创建俱乐部时使用,否则应忽略.事实证明,由于一个错误,密码不会被忽略,并且在保存俱乐部关联时正在验证.所以吉姆斯图尔特的评论是正确的:俱乐部实际上是无效的,即使我认为它是.

在开发过程中没有出现问题的原因是我在开发环境中关闭了密码验证,因此我可以使用简单的密码进行测试.