У меня есть следующие модели:
User (id, name, network_id)
Network(id, title)
Какой тип модели Rails мне нужно добавить, чтобы я мог сделать:
@user.network.title
@network.users
Спасибо
У меня есть следующие модели:
User (id, name, network_id)
Network(id, title)
Какой тип модели Rails мне нужно добавить, чтобы я мог сделать:
@user.network.title
@network.users
Спасибо
итак сеть has_many
пользователей, а пользователь belongs_to
сети.
Просто добавьте network_id
в таблицу пользователей, если вы еще этого не сделали, а также, поскольку это foreign_key
, стоит ее проиндексировать.
rails generate migration AddNetworkIdToUsers
class AddNetworkIdToUsers < ActiveRecord::Migration
def change
add_column :users, :network_id, :integer
add_index :users, :network_id
end
end
В сетевой модели выполните:
class Network < ActiveRecord::Base
has_many :users
end
В пользовательской модели выполните:
class User < ActiveRecord::Base
belongs_to :network
end
add_reference
?
- person Tyler Petrochko; 15.11.2015
В соответствии с вашей настройкой базы данных вам просто нужно добавить следующие строки в свои модели:
class User < ActiveRecord::Base
belongs_to :network
# Rest of your code here
end
class Network < ActiveRecord::Base
has_many :users
# Rest of your code here
end
Если у вас есть настройка без network_id, вы должны использовать ответ Дэниэлса.
Это мой путь
$rails generate migration AddNetworkIdToUsers
затем настройте файл миграции:
class AddNetworkIdToUsers < ActiveRecord::Migration[5.1]
def up
add_column :users, :network_id, :integer
add_index :users, :network_id
end
def down
remove_index :users, :network_id
remove_column :users, :network_id
end
end