Ich entwickle eine Web-Anwendung für die Task-Management auf Schienen Rubin verwenden. Ich habe zwei Modelle user
und task
. Die Modelle sehen so aus:Verbände in Rails 4
class User < ActiveRecord::Base
has_many :tasks
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
def role?(role_name)
role == role_name
end
def self.assigned_user(task_params)
User.where("name = ?", task_params["assigned_to"])
end
end
class Task < ActiveRecord::Base
belongs_to :user
end
was ich will, ist Aufgabe zuweisen Benutzer, wenn eine Aufgabe erstellt wird. Aber ich weiß nicht, wie es in create
Aktion von tasks_controller
zu tun ist. Meine Aktion erstellen wie diese
def create
@task = Task.new(task_params)
respond_to do |format|
if @task.save
@user = User.assigned_user(task_params)
@user.tasks << Task.last
format.html { redirect_to @task, notice: 'Task was successfully created.' }
format.json { render :show, status: :created, location: @task }
else
format.html { render :new }
format.json { render json: @task.errors, status: :unprocessable_entity }
end
end
end
sieht Wenn Admin eine Aufgabe zuweist, wenn seine erstellt, gibt es eine Fehlermeldung, dass undefined method tasks for #<User::ActiveRecord_Relation:0x007fe7b1c60610>
. Kann jemand helfen, was kann das Problem sein?
Was ist das? '@user = User.assigned_user (task_params)' Auch in der nächsten Zeile verwendet diesen: '@user.tasks << @ task', otherwhise es unnötig, eine Abfrage in der Datenbank zu tun. – developer033
assigned_user ist eine Methode im Benutzermodell, die den aus der Datenbank abgerufenen Benutzer zurückgibt. –