私のアプリでは、ユーザーは多くの企業を持つことができ、その逆もあります。 In Accounts UserのユーザーIDとその会社のIDが格納されます。 current_userに属するCompaniesに所属するすべてのユーザーを検索したいとします。 current_userは、それらの企業のマスターユーザー(管理者ではなく、システム管理者であるユーザー)のようになっているとします。 どうすればいいですか?私の推測はArelとそれをすることですが、モデル、コントローラ、ビューでどのように見えるでしょうか?助けてくれてありがとうございました。私はRailsの上5.Rails 5:企業に属し、current_userに属しているすべてのユーザーを検索します。
モデル/ user.rb
class User < ApplicationRecord
has_many :accounts, dependent: :destroy
has_many :companies, through: :accounts
モデル/ account.rb
class Account < ApplicationRecord
belongs_to :company
belongs_to :user
accepts_nested_attributes_for :company, :user
モデル/ company.rb
class Company < ApplicationRecord
has_many :accounts, dependent: :destroy
has_many :users, through: :accounts
accepts_nested_attributes_for :accounts, :users
マイスキーマです。 rbは次のようになります。
create_table "accounts", force: :cascade do |t|
t.integer "company_id"
t.integer "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["company_id"], name: "index_accounts_on_company_id"
t.index ["user_id"], name: "index_accounts_on_user_id"
end
create_table "companies", force: :cascade do |t|
t.string "name"
t.string "legal_name"
t.string "reg_number"
t.string "address"
t.string "bank_acc"
t.string "description"
t.string "website"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "role", default: 0
t.integer "currency", default: 0
end
create_table "users", force: :cascade do |t|
t.string "name"
t.string "email"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "password_digest"
t.string "remember_digest"
t.boolean "admin", default: false
t.index ["email"], name: "index_users_on_email", unique: true
end
私は必要なだけ滑らかに動作します。解決していただきありがとうございます! Railsコミュニティは最高です! – matiss
@matissがうまくいきました – Nimir
@Santhosh Viewに関して、一意のユーザー名のみを表示するにはどうすればいいですか?私は2つの会社を持っていて、その両方のユーザーがいる場合、ユーザー名は2回表示されます。 – matiss