我的rails应用程序中有很多关系,其中关联的唯一性经过验证,如下所示:
class Foo < ActiveRecord::Base
...
has_many :foo_bars
has_many :bars, :through => :foo_bars, :uniq => true
validates_associated :foo_bars
...
end
这很有效,但我想在我的控制器中做的是找出当我尝试在现有的foo和bar之间创建一个新的关联时,如果它是成功的。像这样:
if @myFoo.bars << @bar
...
end
但这不起作用,因为&lt;&lt;方法返回所有myFoo的Bars数组不是true / false。我知道必须有一个正确的“轨道方式”才能做到这一点,但我不知道它是什么(我唯一能想到的是检查查询后关联条的数量是否发生变化,但这看起来真的很草率) 。有什么建议吗?
答案 0 :(得分:2)
试试这个:
link = my_foo.foo_bars.build(:bar => bar)
if link.save
# success
else
# error
end