0

Rails で PHP ベースのサポート チケット システムを書き直していますが、問題が発生しました。ユーザー テーブルとチケット テーブルを作成しました

create_table "tickets", :force => true do |t|
  t.integer  "user_id",       :null => false
  t.integer  "department_id", :null => false
  t.integer  "upload_id",     :null => false
  t.string   "subject",       :null => false
  t.text     "body",          :null => false
  t.string   "status_id",     :null => false
  t.text     "url",           :null => false
  t.datetime "created_at",    :null => false
  t.datetime "updated_at",    :null => false
end

create_table "users", :force => true do |t|
  t.string   "fName",      :null => false
  t.string   "lName",      :null => false
  t.string   "seKey",      :null => false
  t.boolean  "isAdmin"
  t.datetime "created_at", :null => false
  t.datetime "updated_at", :null => false
  t.string   "auth_token"
end

すべてうまく機能しており、チケットを作成することができます...今、1 人以上の管理者をチケットに割り当てる必要があります。

PHP で現在セットアップされている方法は、userID と ticketID を一致させる結合テーブルを使用するだけです。それ以外の関係に関連する他のデータが必要になるとは思わないので、has_and_belongs_to_many が最良のオプションですか?

また、チケットはすでにユーザー テーブル (元の作成者) のレコードに関連付けられているため、これにより問題が発生しますか? 基本的に、チケットには users テーブルへの複数の接続があり、1 つはそれを送信した人で、残りはそれを処理するように割り当てられたユーザーです。

4

3 に答える 3

2

どちらも機能します。ただし、個人的には、has_many :through 関係を好みます。その理由は、結合テーブルにアクセスできるからです。これを行うには、andticket_userというフィールドを持つというモデルを生成します。次に、モデルに追加しますuser_idticket_id

belongs_to :user
belongs_to :ticket

次に、チケットモデルに追加できます

has_many :ticket_users
has_many :users :through ticket_user

これをユーザーモデルに

has_many :ticket_users
has_many :ticket :through ticket_user

次に、すべてのユーザーのチケットを取得するには

user.tickets

ユーザーが行うすべてのチケットを取得するには

ticket.users

詳細については、このガイドをご覧ください

于 2012-09-05T15:59:19.440 に答える
0

あなたの場合、has_and_belongs_to_manyは追加の関係です。

has_and_belongs_to_many :members, :class_name => "User", :join_table => "members_tickets"

http://guides.rubyonrails.org/association_basics.html#choosing-between-has_many-through-and-has_and_belongs_to_manyに示すように、フィールドとしてticket_idとmember_idを使用して1つのテーブルmembers_usersを作成する必要があります。

これで、以下のように割り当てられたメンバーのリストを取得できます

@ticket.members # list of members
@ticket.members << @user # add new member
于 2012-09-05T14:21:05.640 に答える
0

これはうまくいくかもしれません - ユーザーとチケットの間の 2 つの関係を作成します。

于 2012-09-05T14:30:26.357 に答える