2

我有几个与这has_many belongs_to对关联的模型。为了演示,一个客户端有一个服务器,但一个服务器有很多客户端。我可能会做这样的事情:

client1.server = the_server
client2.server = the_server
client3.server = the_server

我的实际应用程序比这复杂得多,但该示例将用于说明。

我想在保存这些对象之前检查它们之间的关联。ActiveRecord 在保存之前不会更新他们的信息。在上面的示例中,直到其中一个人得救之前,the_server都不知道是谁client1client2或。client3我确信这有助于提高 active_record 的效率,但它会使内存中的模型实例处于不一致的状态。

我可以在客户端或服务器上调用任何会导致它们更新状态的东西吗?

4

3 回答 3

1

调用#reload对象来更新它们。

于 2009-04-02T01:08:44.077 回答
0

If you start off like this:

client1 = the_server.clients.build(:name => 'a client', ...)

Then you should get what you're looking for I think.

EDIT:

Oops, I re-read your post and realized that the_server hasn't been saved yet either. In that case perhaps:

client1.server = the_server
the_server.clients << client1

(be aware that this will save client1 if the_server is already saved)

or:

the_server.clients.build(:name => 'some client', ..., :server => the_server)

A bit redundant so perhaps there's a better way out there.

于 2009-04-02T18:14:34.930 回答
0

如果您使用创建关联的相反方式,那么您可以在保存模型之前查看模型:

the_server.clients << client1
the_server.clients << client2
the_server.clients << client3

client1.server但是请注意,如果the_server已经存在,您只能在之后立即调用。

于 2009-04-06T01:36:48.790 回答