Project と Language の 2 つのモデル間の関係を削除したいと考えています。これら 2 つのモデルは、追加のパラメーター (is_default など) も格納するリンク テーブルを介してリンクされます。
私のモデルは
class Project < ActiveRecord::Base
has_many :links
has_many :languages, :through => :links
# ...
end
class Link < ActiveRecord::Base
belongs_to :project
belongs_to :language
end
class Language < ActiveRecord::Base
has_many :links
has_many :projects, :through => :links
# ...
end
私はプロジェクトコントローラでこれを試しました:
# Removes a languages associated to a project (links table)
def remove_language
lang = current_project.links.where("language_id = ?", params[:id])
current_project.links.delete(lang) if lang
redirect_to project_path(current_project), notice: 'Language has been removed from project.'
end
しかし、次のエラーが表示されます。
ActiveRecord::UnknownPrimaryKey in ProjectsController#remove_language
Unknown primary key for table links in model Link.
私のroutes.rbには含まれています
resources :projects
match 'projects/remove_language/:id' => 'projects#remove_language'
match 'projects/add_language/:id' => 'projects#add_language'
私はこれで私のコントローラを呼び出します:
link_to "Remove", :controller => :projects, :action => :remove_language, :id => a.id