让我们举一个例子:
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返回[]。
这可能是什么原因?
答案 0 :(得分:1)
u1.subscriptions << s1
[s1]
u1.subscriptions << s2
[s1,s2]
.. ..等等 将元素添加到类似于push方法的数组
而s1.user = u1
总是为用户对象赋值
s1.user = u2
它给出了u2