ActiveRecord:集合之间的差异<<对象和关联=(关联)

时间:2013-01-24 09:10:34

标签: ruby-on-rails associations has-many belongs-to rails-activerecord

让我们举一个例子:

class Subscription < ActiveRecord::Base
 belongs_to :user
end

class User < ActiveRecord::Base
 has_many :subscriptions
end

u1 =User.new
s1 = Subscription.new

据我所知,以下两行应该是等效的:

u1.subscriptions << s1, and 
s1.user = u1

然而,事实并非如此。 执行第一行后,u1.subscriptions_ids返回[1],但在执行第二行后,u1.subscriptions_ids返回[]。

这可能是什么原因?

1 个答案:

答案 0 :(得分:1)

u1.subscriptions << s1
[s1]

u1.subscriptions << s2
[s1,s2]

.. ..等等    将元素添加到类似于push方法的数组

s1.user = u1总是为用户对象赋值

s1.user = u2

它给出了u2