From a3de4cc2d4e49744c780c897519ca9af549c4976 Mon Sep 17 00:00:00 2001 From: Rueshyna Date: Mon, 11 Mar 2013 14:53:21 +0800 Subject: [PATCH] fixed author sample data generation and model method --- .../app/models/writing_conference.rb | 16 +++++++++++++- .../spec/factories/writing_conferences.rb | 2 +- .../app/models/writing_journal.rb | 21 ++++++++++++++++++- .../spec/factories/writing_journals.rb | 2 +- 4 files changed, 37 insertions(+), 4 deletions(-) diff --git a/vendor/built_in_modules/personal_conference/app/models/writing_conference.rb b/vendor/built_in_modules/personal_conference/app/models/writing_conference.rb index fc14f64e..090f54d1 100644 --- a/vendor/built_in_modules/personal_conference/app/models/writing_conference.rb +++ b/vendor/built_in_modules/personal_conference/app/models/writing_conference.rb @@ -42,6 +42,7 @@ class WritingConference validates :paper_title, :at_least_one => true before_validation :add_http after_save :save_writing_conference_files + before_save :update_co_author validates :url, :format => /^(http|https):\/\/(([a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5})|((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))(:[0-9]{1,5})?(\/.*)?/i, :unless => Proc.new{self.url.blank?} attr_reader :author_tokens @@ -52,7 +53,7 @@ class WritingConference ConferenceCoAuthor.find(id).id rescue if id != "0" - new_co_author = ConferenceCoAuthor.new(:co_author => id, :name_id => create_user_id) + new_co_author = ConferenceCoAuthor.new(:co_author => id) new_co_author.save new_co_author.id else @@ -63,6 +64,19 @@ class WritingConference self.conference_co_author_ids = authors_ids end + def update_co_author + if new_record? + current_user = self.create_user_id + else + current_user = self.update_user_id + end + + self.conference_co_author_ids.each do |id| + co_author = ConferenceCoAuthor.find(id) + co_author.update_attribute(:name_id, current_user) + end + end + def self.search( category_id = nil ) if category_id.to_s.size > 0 find(:all, :conditions => {writing_conference_category_id: category_id}).desc( :is_top, :title ) diff --git a/vendor/built_in_modules/personal_conference/spec/factories/writing_conferences.rb b/vendor/built_in_modules/personal_conference/spec/factories/writing_conferences.rb index 759e47d4..8f338f5e 100644 --- a/vendor/built_in_modules/personal_conference/spec/factories/writing_conferences.rb +++ b/vendor/built_in_modules/personal_conference/spec/factories/writing_conferences.rb @@ -26,7 +26,7 @@ FactoryGirl.define do "#{data_json[n]["year"]}" end - f.sequence(:authors) do |n| + f.sequence(:author_tokens) do |n| "#{data_json[n]["author"].map{|m| m.split(",").reverse.join(" ")}.join(",")}" end diff --git a/vendor/built_in_modules/personal_journal/app/models/writing_journal.rb b/vendor/built_in_modules/personal_journal/app/models/writing_journal.rb index 9088358e..0b66a0ac 100644 --- a/vendor/built_in_modules/personal_journal/app/models/writing_journal.rb +++ b/vendor/built_in_modules/personal_journal/app/models/writing_journal.rb @@ -37,18 +37,24 @@ class WritingJournal after_save :save_writing_journal_files before_validation :add_http #before_save :save_co_author + before_save :update_co_author validates :paper_title, :at_least_one => true validates :url, :format => /^(http|https):\/\/(([a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5})|((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))(:[0-9]{1,5})?(\/.*)?/i, :unless => Proc.new{self.url.blank?} attr_reader :author_tokens def author_tokens=(ids) + if new_record? + current_user = create_user_id + else + current_user = update_user_id + end authors_ids = ids.split(",").map{|id| begin JournalCoAuthor.find(id).id rescue if id != "0" - new_co_author = JournalCoAuthor.new(:co_author => id, :name_id => create_user_id) + new_co_author = JournalCoAuthor.new(:co_author => id) new_co_author.save new_co_author.id else @@ -58,6 +64,19 @@ class WritingJournal } self.journal_co_author_ids = authors_ids end + + def update_co_author + if new_record? + current_user = self.create_user_id + else + current_user = self.update_user_id + end + + self.journal_co_author_ids.each do |id| + co_author = JournalCoAuthor.find(id) + co_author.update_attribute(:name_id, current_user) + end + end # old method #def save_co_author # authors_list = authors.split(",").map{|n| n.strip.gsub(/\s+/," ")}.reject{|n| n.empty? } diff --git a/vendor/built_in_modules/personal_journal/spec/factories/writing_journals.rb b/vendor/built_in_modules/personal_journal/spec/factories/writing_journals.rb index a402a91d..0d1f6b62 100644 --- a/vendor/built_in_modules/personal_journal/spec/factories/writing_journals.rb +++ b/vendor/built_in_modules/personal_journal/spec/factories/writing_journals.rb @@ -30,7 +30,7 @@ FactoryGirl.define do "#{data_json[n]["year"]}" end - f.sequence(:authors) do |n| + f.sequence(:author_tokens) do |n| "#{data_json[n]["author"].map{|m| m.split(",").reverse.join(" ")}.join(",")}" end