Rails メソッドの find_by_name は知っていますが、名前の代わりにオブジェクトがある場合はどうなるでしょうか? @car
私がオブジェクトを持っていると仮定し@brand
ます。特定のオブジェクトcars
を持つすべてを検索するにはどうすればよいですか。brand
何かのようなもの@cars = Car.find_by_brand(@brand)
私は試し@cars = @brand.cars
ましたが、それは1つの親モデルしか引っ張っていないようです。
編集 - コードの詳細
車のコントローラー:
has_and_belongs_to_many :brands
ブランドモデル:
attr_accessible :name
has_and_belongs_to_many :cars
ブランドコントローラー
def create
@car = Car.find(params[:car_id])
@brand = Brand.create
@brand.assign_attributes({ :name => params[:brand][:brands][:name] })
@brand.cars << @car
if @brand.save
redirect_to @car
else
flash[:notice] = "Error!"
redirect_to @car
end
end
def findcars
@brand = Brand.find_by_name(params[:brand_name])
@cars = @brand.cars
end
意見
<%= link_to brand.name, findcars_car_brand_path(@car, brand_name: brand.name), method: "get" %>
ルート
resources :cars do
resources :brands do
member { get :findcars }
end
end
テーブル- 結合テーブルのモデルがありません
brands (name:string)
cars (name:string)
brands_cars (brand_id:integer, car_id:integer)