【发布时间】:2016-06-03 20:14:15
【问题描述】:
我有一个user 模型和一个town 模型。 user 属于town:
# models/user.rb
class User < ApplicationRecord
belongs_to :town
accepts_nested_attributes_for :town
validates :last_name, presence: true
end
# models/town.rb
class Town < ApplicationRecord
has_many :users
validates :name, presence: true
validates :name, uniqueness: true
end
你去创建一个新的user 记录:有一个text_box 用于放入相关城镇的name。提交后,rails 应用程序应执行以下操作:
- 使用
find_or_create_by。去检查是否已经存在带有name属性传入的town记录。- 如果
town记录与给定的name属性存在,只需将现有的town记录关联到这个新的user记录 - 如果
town记录与给定的name属性不存在,则使用该name属性创建一个新的town记录,并将该记录与该user记录相关联
- 如果
- 如果任何验证失败,请勿创建
user记录或town记录并重新呈现表单。
我在这方面遇到了真正的麻烦。 This question 建议将autosave 放在belongs_to :town 语句上,并定义一个名为autosave_associated_records_for_town 的方法。但是:我就是无法让它发挥作用。
欣赏!
【问题讨论】:
标签: ruby-on-rails ruby