我有Addresses
,Lists
和AddressListMemberships
。
在这个特定的应用程序中,有超过一千List
秒和数千Addresse
s。
我已经实现了一个UI页面,让用户可以控制List
的{{1}}个。我添加了这些动作......
Address
一切都很美妙。
但是,这些操作看起来似乎有太多代码。我猜测有一种更简洁,Railsish的方式来实现它们,尤其是这个......
class ListsController < ApplicationController
# ...
def add_address
@list = List.find(params[:id])
address = Address.find(params[:address_id])
@list.addresses << address unless @list.addresses.include? address
redirect_to(manage_list_addresses_path(@list))
end
def remove_address
@list = List.find(params[:id])
address = Address.find(params[:address_id])
@list.addresses.delete address
redirect_to(manage_list_addresses_path(@list))
end
end
答案 0 :(得分:2)
不,不是。附加地址列表成员资格的对象上有一个可以使用的方法。因此,在您的地址模型上,您可以访问:
@address.list_ids
这是连接的一组id。所以如果你有:
@address.list_ids = [1,2,3]
将有三个已加入的记录。如果你想摆脱ID为2的List,你就可以了。
@address.list_ids = [1,3]
复选框是一个很好的接口,您应该看看这个railscast,HMT关系和HABTM关系提供ActiveRecord中开箱即用的_ids数组方法。
这是最好的方法。