ArgumentError: wrong number of arguments (given 1, expected 2) for Update_Attribute Method
ArgumentError: wrong number of arguments (given 1, expected 2) for Update_Attribute Method
我正在创建一个周期性事件应用程序,某些用户(主播)可以在其中安排每周重复发生的事件(流),而其他用户(观众)可以关注它们。其结果是一个个性化的每周日历,详细说明所有关注的主播活动的开始和结束时间。
但是,由于观众可以关注无数的主播,因此最终的日历看起来会一团糟。所以我在关系 table 中添加了一个布尔属性,表示该关系是否已被收藏。
create_table "relationships", force: :cascade do |t|
t.integer "follower_id"
t.integer "followed_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.boolean "favorited", default: false
t.index ["followed_id"], name: "index_relationships_on_followed_id"
t.index ["follower_id", "followed_id"], name: "index_relationships_on_follower_id_and_followed_id", unique: true
t.index ["follower_id"], name: "index_relationships_on_follower_id"
end
这样,观众将拥有第二个个性化日历,该日历将仅显示最喜欢的主播活动。
我已经有一个关注和取消关注的方法,可以成功地创建和破坏观看者和主播之间的关系,但是我无法成功地将现有关系从不喜欢的更新为收藏。
test "should favorite and unfavorite a streamer" do
yennifer = users(:yennifer)
cirilla = users(:cirilla)
yennifer.follow(cirilla)
yennifer.favorite(cirilla) #user_test.rb:151
end
测试套件returns出现以下错误,我不知道缺少的参数是什么。
["test_should_favorite_and_unfavorite_a_streamer", #<Minitest::Reporters::Suite:0x0000000006125da8 @name="UserTest">, 0.16871719993650913]
test_should_favorite_and_unfavorite_a_streamer#UserTest (0.17s)
ArgumentError: ArgumentError: wrong number of arguments (given 1, expected 2)
app/models/relationship.rb:11:in `favorite'
app/models/user.rb:124:in `favorite'
test/models/user_test.rb:151:in `block in <class:UserTest>'
27/27: [=================================] 100% Time: 00:00:01, Time: 00:00:01
Finished in 1.82473s
27 tests, 71 assertions, 0 failures, 1 errors, 0 skips
User.rb
# Follows a user
def follow(other_user)
active_relationships.create(followed_id: other_user.id)
end
# Unfollows a user
def unfollow(other_user)
active_relationships.find_by(followed_id: other_user.id).destroy
end
def favorite(other_user)
active_relationships.find_by(followed_id: other_user.id).favorite #user.rb:124
end
def unfavorite(other_user)
active_relationships.find_by(followed_id: other_user.id).unfavorite
end
Relationships.rb
def favorite
update_attribute(favorited: true) #relationship.rb:11
end
def unfavorite
update_attribute(favorited: false)
end
谁能帮我找出丢失的参数并解决这个问题。谢谢。
这个答案的第一条评论是正确的,所以我不知道为什么这个人发表评论而不是回答。 update_attribute 有两个参数,你传递给它一个散列参数。您的 "favorite" 方法等同于
update_attribute({favorited: true})
当你真的想要 update_attribute(:favorited, true)
我正在创建一个周期性事件应用程序,某些用户(主播)可以在其中安排每周重复发生的事件(流),而其他用户(观众)可以关注它们。其结果是一个个性化的每周日历,详细说明所有关注的主播活动的开始和结束时间。
但是,由于观众可以关注无数的主播,因此最终的日历看起来会一团糟。所以我在关系 table 中添加了一个布尔属性,表示该关系是否已被收藏。
create_table "relationships", force: :cascade do |t|
t.integer "follower_id"
t.integer "followed_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.boolean "favorited", default: false
t.index ["followed_id"], name: "index_relationships_on_followed_id"
t.index ["follower_id", "followed_id"], name: "index_relationships_on_follower_id_and_followed_id", unique: true
t.index ["follower_id"], name: "index_relationships_on_follower_id"
end
这样,观众将拥有第二个个性化日历,该日历将仅显示最喜欢的主播活动。
我已经有一个关注和取消关注的方法,可以成功地创建和破坏观看者和主播之间的关系,但是我无法成功地将现有关系从不喜欢的更新为收藏。
test "should favorite and unfavorite a streamer" do
yennifer = users(:yennifer)
cirilla = users(:cirilla)
yennifer.follow(cirilla)
yennifer.favorite(cirilla) #user_test.rb:151
end
测试套件returns出现以下错误,我不知道缺少的参数是什么。
["test_should_favorite_and_unfavorite_a_streamer", #<Minitest::Reporters::Suite:0x0000000006125da8 @name="UserTest">, 0.16871719993650913]
test_should_favorite_and_unfavorite_a_streamer#UserTest (0.17s)
ArgumentError: ArgumentError: wrong number of arguments (given 1, expected 2)
app/models/relationship.rb:11:in `favorite'
app/models/user.rb:124:in `favorite'
test/models/user_test.rb:151:in `block in <class:UserTest>'
27/27: [=================================] 100% Time: 00:00:01, Time: 00:00:01
Finished in 1.82473s
27 tests, 71 assertions, 0 failures, 1 errors, 0 skips
User.rb
# Follows a user
def follow(other_user)
active_relationships.create(followed_id: other_user.id)
end
# Unfollows a user
def unfollow(other_user)
active_relationships.find_by(followed_id: other_user.id).destroy
end
def favorite(other_user)
active_relationships.find_by(followed_id: other_user.id).favorite #user.rb:124
end
def unfavorite(other_user)
active_relationships.find_by(followed_id: other_user.id).unfavorite
end
Relationships.rb
def favorite
update_attribute(favorited: true) #relationship.rb:11
end
def unfavorite
update_attribute(favorited: false)
end
谁能帮我找出丢失的参数并解决这个问题。谢谢。
这个答案的第一条评论是正确的,所以我不知道为什么这个人发表评论而不是回答。 update_attribute 有两个参数,你传递给它一个散列参数。您的 "favorite" 方法等同于
update_attribute({favorited: true})
当你真的想要 update_attribute(:favorited, true)