gpt4 book ai didi

ruby-on-rails - has_one 没有更新属性 ID?

转载 作者:行者123 更新时间:2023-11-29 12:13:33 25 4
gpt4 key购买 nike

所以我有一个数据库关系,其中用户有一个 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。我究竟做错了什么?

最佳答案

外键在声明 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 不会对其进行任何操作。如果确实需要操作preference_list_id,尝试改变belongs_to/has_one sides。或者使用 user.preference_list.id

关于ruby-on-rails - has_one 没有更新属性 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18062051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com