collection_check_boxes 错误

Error with collection_check_boxes

如何解决这个错误:

SQLite3::SQLException: 没有这样的列: functionalities.profile_id: SELECT "functionalities".* FROM "functionalities" WHERE "functionalities". "profile_id" = 1

这是我的_form.html.erb

<h3>Add functionalities</h3>
  <% if current_user.admin? %>
    <%= f.collection_check_boxes :functionality_ids, Functionality.all, :id, :description %>
  <% else %>
    <%= f.collection_check_boxes :functionality_ids, Functionality.where(profile_id: current_user.profile.id), :id, :description %>
  <% end %>

Profile.rb

  has_many :users
  has_many :profile_functionalities
  has_many :functionalities, through: :profile_functionalities
  belongs_to :manager
  belongs_to :agent

Functionality.rb

 # Nothing here for now

简介Functionality.rb

  belongs_to :profile
  belongs_to :functionality

我认为我需要加入,因为当我在 else.

时出现错误

您当前拥有的是多对多关系,因此功能没有 profile_id 列。您需要先找到配置文件,然后获取与其相关的功能:

Profile.find(current_user.profile_id).functionalities

如果current_user本身就是一个activerecord对象,你可以这样做:

current_user.profile.functionalities

一般来说,您不想专门引用 *_id 列,而是让 rails 为您进行翻译。