我尝试创建一种方法来管理Items
User
或Event
有多少ItemDatum
。我以为我可以通过另一个模型ItemDatum
来做到这一点。
我认为User
属于Event
,has_many
和Items
class ItemDatum < ActiveRecord::Base
belongs_to :event
belongs_to :user
has_many :items
end
。
Event
ItemDatum
会有一个Items
并且有ItemDatum
到class Event < ActiveRecord::Base
...
has_one :item_datum, dependent: :destroy
has_many :items, through: :item_datum
end
Items
ItemDatum
属于许多class Item < ActiveRecord::Base
has_and_belongs_to_many :item_datum
...
end
class CreateEvents < ActiveRecord::Migration
def change
create_table :events do |t|
t.string :name
t.string :text
t.integer :location_id
t.integer :item_datum_id
t.timestamps null: false
end
end
end
class CreateItemData < ActiveRecord::Migration
def change
create_table :item_data do |t|
t.integer :item_id
t.integer :event_id
t.integer :user_id
t.timestamps null: false
end
end
end
class CreateItems < ActiveRecord::Migration
def change
create_table :items do |t|
t.string :name
t.string :description
t.string :item_type
t.integer :value
t.integer :item_datum_id
t.timestamps null: false
end
add_index :items, :name, unique: true
end
end
然而,这并不是很有效,而且我没有足够的知识来正确调试它。
以下是迁移,如果这也有帮助:
config/app.php
答案 0 :(得分:0)
如果您想要一个项目有很多项目基准,那么您就错过了一个表格。我通常更喜欢使用habtm指定模型。
rails g model ItemDataItem item_data_id:integer item_id:integer
class ItemDataItem < ActiveRecord::Base
belongs_to :item_data
belongs_to :item
end
class Item < ActiveRecord::Base
has_many :item_data_items
has_many :item_datum, through: :item_data_items
end
然后在ItemData类中添加相同的has_many和has_many。我可能有一些我的名字错在复数,但它应该做的伎俩。
修改强>
如果项目只属于一个数据,只需更新项目模型:
class Item < ActiveRecord::Base
belongs_to :item_datum
...
end