我有一个挑战,我一直在努力解决过去几个小时。
我有一个带有嵌套属性的表单。每个帖子都有并且属于许多地点。我需要每个位置都是唯一的,但我还需要能够在许多帖子中添加相同的位置。理想情况下,此验证将在模型中完成。
经过一些研究,我得知我需要这样的东西:
*Posts.rb*
# =================
# = Location validations =
# = If location exists then just add to locations_posts, else create new location =
def locations_attributes
location && location.name
end
def locations_attributes=(value)
self.location = Location.find_by_name(value)
self.location ||= Location.new(:name => value)
end
(从rails: create Parent, if doesn't exist, whilte creating child record被盗)
但是,我收到的错误如下:
Unknown key: 0
我想我必须接近这个片段,但需要一些帮助才能克服最后一道障碍!
提前致谢,
詹姆斯
答案 0 :(得分:1)
尝试使用:
def locations_attributes=(value)
self.location = Location.find_or_create_by_name(value)
end
答案 1 :(得分:0)
def locations_attributes=(value)
self.location = Location.find_or_create_by(value)
end
这将检查传入位置的所有属性的唯一性。