Ruby on rails 如何更新没有FK的现有嵌套属性
假设用户有一个:订阅,订阅属于:用户,并且我正在使用accepts\u nested\u attributes\u for将订阅属性嵌套到用户创建表单中,根据User.email==subscription.email查找和更新现有订阅(如果存在)的最佳方法是什么Ruby on rails 如何更新没有FK的现有嵌套属性,ruby-on-rails,nested-attributes,Ruby On Rails,Nested Attributes,假设用户有一个:订阅,订阅属于:用户,并且我正在使用accepts\u nested\u attributes\u for将订阅属性嵌套到用户创建表单中,根据User.email==subscription.email查找和更新现有订阅(如果存在)的最佳方法是什么 请注意,现有订阅可能具有user_id=nil,您可能希望使用电子邮件作为外键: class User < ActiveRecord::Base has_one :subscription, :foreign_key =&g
请注意,现有订阅可能具有user_id=nil,您可能希望使用电子邮件作为外键:
class User < ActiveRecord::Base
has_one :subscription, :foreign_key => "email", :primary_key => "email"
end
class用户电子邮件,:主键=>电子邮件
结束
我认为这需要分为两个步骤:
人力资源管理,是的……我想过这么做。让我来玩玩那个主意。谢谢。我偶尔也这样做。除了作为一个自然密钥之外,它还可以很好地工作,这意味着当用户想要更改他们的电子邮件地址时,您将遇到问题。请确保您在电子邮件中为这两个表都设置了索引。好的,我已经设置了关联,但仍然会得到重复的记录。我在接受的嵌套属性上有update_only=>true。有什么想法吗?问题可能是订阅电子邮件不是通过表单发送的,而是设置为。。。在保存{self.email=user.email if user}之前。不确定…如果是这样,您可能需要在控制器中使用一些自定义逻辑来处理它。嵌套属性可能不是您正在寻找的解决方案。