docbrown/app/services/article_creation_service.rb
Abraham Williams 9cb40e546b Enables Rails cops (#2186)
* Enable Rails cops

* Fix Rails/DynamicFindBy

* Fix Rails/HttpStatus

* Fix Rails/Blank

* Fix Rails/RequestReferer

* Fix Rails/ActiveRecordAliases

* Fix Rails/FindBy

* Fix Rails/Presence

* Fix Rails/Delegate

* Fix Rails/Validation

* Fix Rails/PluralizationGrammar

* Fix Rails/Present

* Fix Rails/Output

* Fix Rails/Blank

* Fix Rails/FilePath

* Fix Rails/InverseOf

* Fix Rails/LexicallyScopedActionFilter

* Add Rails/OutputSafety to TODO

* Add Rails/HasManyOrHasOneDependent to TODO

* Add Rails/SkipsModelValidations to TODO
2019-03-25 09:25:55 -04:00

32 lines
1.1 KiB
Ruby

class ArticleCreationService
attr_accessor :user, :article_params, :job_opportunity_params
def initialize(user, article_params, job_opportunity_params)
@user = user
@article_params = article_params
@job_opportunity_params = job_opportunity_params
end
def create!
raise if RateLimitChecker.new(user).limit_by_situation("published_article_creation")
article = Article.new(article_params)
article.user_id = user.id
article.show_comments = true
article.organization_id = user.organization_id if user.organization_id.present? && article_params[:publish_under_org].to_i == 1
article.collection_id = Collection.find_series(article_params[:series], user).id if article_params[:series].present?
create_job_opportunity(article)
if article.save
Notification.send_to_followers(article, "Published") if article.published
end
article.decorate
end
def create_job_opportunity(article)
return if job_opportunity_params.blank?
job_opportunity = JobOpportunity.create(job_opportunity_params)
article.job_opportunity = job_opportunity
raise unless article.tag_list.include? "hiring"
end
end