2

所以我有一个用户有一个 PreferenceList 的数据库关系。我在数据库表中设置了一个preference_list_id,并设置了belongs_to :user与PreferenceList的has_one :preference_list关系和与User的关系。

这是奇怪的部分。如果我这样做user.preference_list = preference_list,我可以访问 user.preference_list,它会给我正确的preference_list 实例。但是,如果我执行 user.preference_list_id (一个有效的列,我已经检查过),即使在我将preference_list 添加到 user.preference_list 之后,它也不会给我任何东西。我需要为各种数据库操作更新 id。我究竟做错了什么?

4

1 回答 1

2

外键出现在表上,用于声明belongs_to 关联的类。所以如果你有

class PreferenceList < ActiveRecord::Base
  belongs_to :user
end

class User < ActiveRecord::Base
  has_one :preference_list
end

preferences_lists应该有user_id列。Rails 将正确处理这些列。您也可以将preference_list_id列添加到users表中。但是这个列并没有什么特别的意义,Rails 默认不会对它做任何事情。如果您确实需要操作,请尝试更改 belongs_to/has_one 边preference_list_id。或使用user.preference_list.id

于 2013-08-05T16:08:02.023 回答