mirror of
https://github.com/discourse/discourse.git
synced 2025-05-24 02:51:09 +08:00
work around for http://meta.discourse.org/t/activerecord-statementinvalid-exception-raised-in-models-user-action-rb/7275/4
This commit is contained in:
@ -163,10 +163,16 @@ ORDER BY p.created_at desc
|
|||||||
end
|
end
|
||||||
|
|
||||||
def self.log_action!(hash)
|
def self.log_action!(hash)
|
||||||
require_parameters(hash, :action_type, :user_id, :acting_user_id, :target_topic_id, :target_post_id)
|
required_parameters = [:action_type, :user_id, :acting_user_id, :target_topic_id, :target_post_id]
|
||||||
|
require_parameters(hash, *required_parameters)
|
||||||
transaction(requires_new: true) do
|
transaction(requires_new: true) do
|
||||||
begin
|
begin
|
||||||
action = new(hash)
|
|
||||||
|
# protect against dupes, for some reason this is failing in some cases
|
||||||
|
action = self.where(hash.select{|k,v| required_parameters.include?(k)}).first
|
||||||
|
return action if action
|
||||||
|
|
||||||
|
action = self.new(hash)
|
||||||
|
|
||||||
if hash[:created_at]
|
if hash[:created_at]
|
||||||
action.created_at = hash[:created_at]
|
action.created_at = hash[:created_at]
|
||||||
|
@ -87,6 +87,9 @@ describe UserAction do
|
|||||||
stats_for_user(u).should == [UserAction::NEW_TOPIC]
|
stats_for_user(u).should == [UserAction::NEW_TOPIC]
|
||||||
stream_count(u).should == 1
|
stream_count(u).should == 1
|
||||||
|
|
||||||
|
# duplicate should not exception out
|
||||||
|
log_test_action
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -107,6 +110,7 @@ describe UserAction do
|
|||||||
it "creates a new stream entry" do
|
it "creates a new stream entry" do
|
||||||
PostAction.act(liker, post, PostActionType.types[:like])
|
PostAction.act(liker, post, PostActionType.types[:like])
|
||||||
likee_stream.count.should == @old_count + 1
|
likee_stream.count.should == @old_count + 1
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
context "successful like" do
|
context "successful like" do
|
||||||
|
Reference in New Issue
Block a user