0
GroupItemレコードをシードしようとしていますが、createメソッドに正しいデータを提供していません。ここレコードの作成多態的な関連付け
irb(main):055:0> group = Group.first
Group Load (0.2ms) SELECT "groups".* FROM "groups" ORDER BY "groups"."id" ASC LIMIT ? [["LIMIT", 1]]
=> #<Group id: 1, groupable_type: "Legislator", name: "Cool Peeps", created_at: "2017-02-23 01:13:21", updated_at: "2017-02-23 01:13:21">
irb(main):056:0> person = Role.first
Role Load (0.2ms) SELECT "roles".* FROM "roles" ORDER BY "roles"."role_id" ASC LIMIT ? [["LIMIT", 1]]
=> #<Role role_id: 100, caucus: nil, congress_numbers: "[106]", current: false, description: "Representative for Wisconsin's 2nd congressional d...", district: 2, enddate: "2001-01-03", address: nil, contact_form: nil, fax: nil, office: nil, rss_url: nil, how: nil, leadership_title: nil, party: "Democrat", person_id: 400013, phone: nil, role_type: "representative", role_type_label: "Representative", senator_class: nil, senator_rank: nil, startdate: "1999-01-06", state: "WI", title: "Rep.", title_long: "Representative", website: "", created_at: "2017-02-23 01:11:08", updated_at: "2017-02-23 01:11:08">
irb(main):059:0> GroupItem.create(group_id: group.id, groupable_type: group.groupable_type, groupable_id: person.id)
(0.1ms) begin transaction
Legislator Load (0.1ms) SELECT "legislators".* FROM "legislators" WHERE "legislators"."id" = ? LIMIT ? [["id", 100], ["LIMIT", 1]]
Group Load (0.1ms) SELECT "groups".* FROM "groups" WHERE "groups"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]]
(0.1ms) rollback transaction
=> #<GroupItem id: nil, group_id: 1, groupable_type: "Legislator", groupable_id: 100, created_at: nil, updated_at: nil>
セット・アップされています:ここで
私はレールコンソールで試してみました何それは団体での問題でなければなりませんclass Group < ApplicationRecord
has_many :group_items
end
class GroupItem < ApplicationRecord
belongs_to :groupable, polymorphic: true
belongs_to :group
end
class Role < ApplicationRecord
belongs_to :person, foreign_key: :person_id
has_many :group_items, as: :groupable
#....
end
# migrations...
class CreateGroups < ActiveRecord::Migration[5.0]
def change
create_table :groups do |t|
t.string :name
t.timestamps
end
end
end
class CreateGroupItems < ActiveRecord::Migration[5.0]
def change
create_table :group_items do |t|
t.integer :group_id
t.references :groupable, polymorphic: true, index: true
t.timestamps
end
end
end
class CreateRoles < ActiveRecord::Migration[5.0]
def change
create_table :roles, :id => false do |t|
t.primary_key :role_id
#...
t.timestamps
end
end
end
、これは多型への私の最初のベンチャー企業であります私はおそらくそこに何かを混乱させました。
あなたは 'group_item.errors.full_messages.to_sentence'ない場合はどうなりますか?また、あなたの 'groupable_type'は' Group'ですが、あなたの 'groupable_id'は' Person'ですか? –
ええ、私は、GroupItem上ではなくGroup上に多相関連を置いています。 –