我正在开发一个寻宝游戏应用程序,我只想知道我是否正确建模。有一个用户可以继续进行的狩猎列表。这些搜寻是可以自定义的模板(例如添加/删除某些任务)。
当用户选择去打猎时,我称之为“旅行”。我已经阅读了关于 Associates 的 Rails 指南,我认为我应该将旅行模型设置为用户和狩猎之间的连接表。这就是我的想法。
class Users
has_many :trips
has_many :hunts, :through => :trips
class Hunts
has_one :trip
has_many :users, :through => : trips
class Trip
belongs_to :users
belongs_to :hunts
然后我设置 Trip 表的迁移将如下所示。
def change
trip_name
user_id
hunt_id
end
我有两个问题。
- 这看起来对吗?
- 有没有更聪明(或更优雅)的方法来做到这一点?
更新:这就是我最终做的事情。
class Users
has_many :trips
has_many :hunts, :through => trips
class Hunts
has_one :trip
has_many :users, :through => trips
class Trip
belongs_to :hunts
belongs_to :users
进而
def change
create_table :trips do |t|
t.string :trip_name
t.references :user
t.references :hunt
end
add_index :trips, :hunt_id
add_index :trips, :user_id
add_index :trips, [:hunt_id, :user_id], :unique => true
end