Rails在连接表和连接表中都具有唯一值

时间:2013-12-11 05:38:36

标签: ruby-on-rails unique-constraint has-and-belongs-to-many

我正在构建一个应用程序,用户可以在其中列出他们想要获取天气的地方。

所以,我有一个成员模型,一个场所模型和一个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,但我认为它不会。有没有办法让它做到这一点?

1 个答案:

答案 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

马上工作。