我有两个型号导轨 - build_association不工作了HAS_ONE和belongs_to的关系
class Subscription < ActiveRecord::Base
belongs_to :client
end
class Client < ActiveRecord::Base
has_one :subscription
end
,但是当我尝试创建例如从孩子父母sub.build_client外键未被设置,例如
>> sub = Subscription.new
=> #<Subscription id: nil, token: nil, user_id: nil, created_at: nil, updated_at: nil, cancelled: nil, active: nil, client_id: nil>
>> sub.save(false);
?> client = sub.build_client
=> #<Client id: nil, server_id: nil, ip: nil, created_at: nil, updated_at: nil>
>> client.save(false)
=> true
>> sub.client_id
=> nil
>> sub
=> #<Subscription id: 4, token: nil, user_id: nil, created_at: "2010-01-11 06:07:45", updated_at: "2010-01-11 06:07:45", cancelled: nil, active: nil, client_id: nil>
它的工作,如果我做client.build_subscription
?> client = Client.new
=> #<Client id: nil, server_id: nil, ip: nil, created_at: nil, updated_at: nil>
>> client.save(false)
=> true
>> sub = client.build_subscription
=> #<Subscription id: nil, token: nil, user_id: nil, created_at: nil, updated_at: nil, cancelled: nil, active: nil, client_id: 4>
>> sub.save(false)
=> true
>> sub
=> #<Subscription id: 5, token: nil, user_id: nil, created_at: "2010-01-11 06:09:32", updated_at: "2010-01-11 06:09:32", cancelled: nil, active: nil, client_id: 4>
>> client
=> #<Client id: 4, server_id: nil, ip: nil, created_at: "2010-01-11 06:09:02", updated_at: "2010-01-11 06:09:02">
>> ^C
伊夫花了3个小摆弄,得到了无处可去快。 任何人都可以解释我做错了什么,要检查的东西等
谢谢约翰,我认为这是这种情况(我曾经咨询了导轨指南,但没有找到这个解释,所以想在这里确认在stackoverflow)。但是,如何与has_many属于关系,这可以做到。 – robodisco 2010-01-11 12:13:41
我只是想,如果它不能做,为什么是那里的构建方法?如果foreign_id不能在这种关系中设置该方法的用途? – robodisco 2010-01-11 12:18:41
这是一个很好的问题。 – 2010-01-11 12:41:53