41 lines
737 B
Ruby
41 lines
737 B
Ruby
class Proverb < ApplicationRecord
|
|
|
|
belongs_to :author
|
|
belongs_to :user
|
|
|
|
before_validation :setup_ownership
|
|
|
|
attr_writer :author_name, :user_email
|
|
|
|
def author_name
|
|
author.try(:name) || @author_name
|
|
end
|
|
|
|
def user_email
|
|
user.try(:email) || @user_email
|
|
end
|
|
|
|
private
|
|
|
|
def setup_ownership
|
|
if author
|
|
author.update_attributes(name: author_name)
|
|
else
|
|
self.author = Author.new(name: author_name)
|
|
author.identify_uniquely
|
|
author.save
|
|
end
|
|
|
|
if user
|
|
user.update_attributes(email: user_email.downcase)
|
|
else
|
|
self.user = User.create(email: user_email.downcase)
|
|
end
|
|
end
|
|
|
|
def attributes
|
|
super.merge(author_name: author_name, user_email: user_email)
|
|
end
|
|
|
|
end
|