0

基本的なタスク管理アプリケーションがあります。タスクの追跡に使用した Task というクラスがあります。認証に使用した User という別のクラスがあります。

タスクには「user_email」という変数があり、ユーザーには「email」という変数があります。これらの変数をforeign_keysとして使用したいと思います。一部のタスク「user_email」は、実際にはユーザーに属していない場合があります。これらの関連付けを依存させたくありません。

多くのタスクを持つユーザーを関連付けたいと思います。次に、ユーザー表示ページでユーザーのタスクを表示します。

4

3 に答える 3

1

多くのタスクを持つユーザーを関連付けるには、次の行をユーザー モデルに追加します。

has_many :tasks

次に、協会の反対側にも注意を払う必要があります。(つまり、ユーザーへのタスク) おそらくあなたのタスクには 1 人のユーザーしかいませんか? この場合、タスク モデルには次の行が必要になります。

belongs_to :user

Rails のアソシエーションの詳細については、Rails ガイドを確認することをお勧めします: http://guides.rubyonrails.org/association_basics.html

于 2013-06-24T23:47:21.360 に答える
0

タスクの所有者を識別するために、電子メールの代わりに ID を使用する必要があります。何かのようなもの

class Task
  belongs_to :user
end

class User
  has_many :tasks
end

user_idこれには、タスク テーブルに呼び出される整数フィールドを追加する必要があります。


ユーザーのタスクを特定するために電子メールを使用したい場合でも、

class User
  has_many :tasks, :conditions => ['user_email = #{self.email}']
end
于 2013-06-24T23:48:56.740 に答える
0

これがこれを処理する最善の方法かどうかはわかりませんが、これが私が現在行っていることです...

基本的に、user_email が現在ログインしているユーザーの電子メールと同じであるというタスクを表示ページに表示したかったのです。

users_controller.rb 内

def show
  @user = User.find(params[:id])
  @tasks = Task.where(:user_email => @user.email)
end

users/show.html.erb 内

<h1><%= @user.name %></h1>
<% @tasks.each do |task| %>
  <%= task.title %><br />
<% end %>

そのため、モデルを関連付けることなく、やりたいことを達成しています。誰かがこれを行うためのより良い方法を提案できる場合は、先に進んでください。

于 2013-06-25T00:38:03.487 に答える