我有一个用户模型,有许多完成的任务。此外,我有用户与用户之间的订阅关系,以下等行为。我正在尝试呈现所有用户完成的任务,并完成了用户所关注用户的任务。问题是,当我将用户已完成的任务添加到用户已完成的任务数组中时,user_id列从已更改的用户标识更改为用户标识。这很奇怪,不知道是什么导致了这一点。对不起,如果我无法解释清楚。将记录添加到主动记录数组更改属性值
这里的代码:
user.rb
class User < ActiveRecord::Base
include BCrypt
before_create :generate_auth_token!
has_secure_password :validations => false
has_many :completed_tasks, dependent: :destroy
has_many :relationships, foreign_key: "follower_id",
class_name: "Relationship",
dependent: :destroy
has_many :followed_users, through: :relationships, :source => "followed"
has_many :reverse_relationships, foreign_key: "followed_id",
class_name: "Relationship",
dependent: :destroy
has_many :followers, through: :reverse_relationships
def generate_auth_token!
begin
self.auth_token = SecureRandom.hex
end while self.class.exists?(auth_token: auth_token)
end
end
completed_task.rb
class CompletedTask < ActiveRecord::Base
belongs_to :user
validates :user_id, :presence => true
end
completed_tasks_controller.rb在这里,在@ user.completed_tasks < < user.completed_tasks user_ID的值变为@ user.id
def index
if valid_auth_token?
@completed_tasks = @user.completed_tasks
@user.followed_users.each do |user|
@completed_tasks << user.completed_tasks
end
render file: "api/v1/completed_tasks/index.json.jbuilder", status: :ok
else
head :unauthorized
end
end
这就是activerecord所做的 - some_user.completed_tasks根据定义是其user_id为some_user.id的任务集合,因此将任务添加到user.completed_tasks更改user_id – 2014-08-31 09:10:09
@FrederickCheung谢谢!构建一个收集自己的和遵循用户任务的数组的正确方法是什么? – samiljin 2014-08-31 09:22:21