1

Member新しい創造形態を持つモデルがあります。このフォームを使用すると、ユーザーは各メンバーに所属する部署と役職を割り当てることができます。役職は部門に関連しています。アプリの別の部分で、ユーザーは部門を作成し、ポジションを作成/割り当てることができます。新しいメンバー ページ用に grouped_collection_select を作成しようとしていますが、自分の役職が表示されず、カテゴリとしての部門だけが表示されます。これは関連付けの問題であり、役職がそれぞれの部署に関連付けられていないと思います。位置モデルに文字列がdepartment_idありますが、選択がそれを親として読み取ることができないと思います。誰かが私を正しい方向に向けることができれば、それは素晴らしいことです.

エラーが発生している行: (from the new members form_for)

<%= f.grouped_collection_select :title, Department.where(production_id: current_user.default_working_production_id).order(:department), :positions, :department, :id, :position, include_blank: true %>

私のスキーマは次のようになります。

create_table "departments", force: true do |t|
    t.string   "department"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "production_id"
end

create_table "positions", force: true do |t|
    t.string   "position"
    t.string   "department_id"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "production_id"
end

私のモデルの関連付け:

class Member < ActiveRecord::Base
    belongs_to :company
    validates :firstname, presence: true
    validates :email, presence: true
    def name
        "#{firstname} #{lastname}"
    end
end

class Department < ActiveRecord::Base
    has_many :positions
    attr_accessible :department
    validates :department, presence: true
end

class Position < ActiveRecord::Base
    belongs_to :department
    attr_accessible :department_id, :position, :department
end
4

1 に答える 1

0

各モデルの主キー ( id) は整数ですが、関連付けの外部キーは移行で文字列として定義されます。( department_idproduction_id)。これは、Rails が関連付けを試みたときに問題を引き起こす可能性があります。たとえば、 が に"1" == 1評価されるためfalseです。新しい移行を介して、または既存の移行を編集してデータベースをリセットすることにより、外部キーを整数に変更します。

Rails コンソールとの関連付けが修正されたかどうかを確認できます。

$> rails console
Running via Spring preloader in process 20933
Loading development environment (Rails 4.2.5)
irb(main):001:0> Department.first.positions

これにより、データベース内の最初の部門にそのすべてのポジションが照会されます。エラーが発生する場合は、関連付けが正しく設定されていません。位置のコレクションが返される場合、関連付けは機能します。

于 2016-01-03T11:18:37.590 に答える