我正在构建一个应用程序,用户可以在其中列出他们想要获取天气的地方。
所以,我有一个成员模型,一个场所模型和一个members_places表。
Member
has_and_belongs_to_many :places, uniq => :true
Place
has_and_belongs_to_many :members, uniq => :true
我有members_places
在我的场所控制器中,我有
def create
@member.places.create(params[:place])
respond_with @member.places
end
当我运行创建时,我得到duplicate key value violates constraint "index_places_on_name_and_lat_and_lon
我希望has_and_belongs_to_many会使用find_or_create_by,但我认为它不会。有没有办法让它做到这一点?
答案 0 :(得分:0)
答案并不太难,但有点奇怪。
我最终做的是
def create
@place = Place.find_or_create_by_name_and_lat_and_lon(params[:place])
@member.places << @place
respond_with @member.places
end
马上工作。