Sha256: 8ce0ef5b2962f54149de73c11c0387d4781f3df87284fc07910b4d47257fd38f
Contents?: true
Size: 1.4 KB
Versions: 1
Compression:
Stored size: 1.4 KB
Contents
require "active_record" require "activerecord/mlang/version" require "active_record/mlang/text" module ActiveRecord module Mlang def self.included(base) base.extend ClassMethods base.set_text_reflection if base.text end module ClassMethods def text_class_name(text_class_name=nil) if text_class_name self.text_class_name = text_class_name end @text_class_name || (self.name + "Text") end def text_class_name=(text_class_name) @text_class_name = text_class_name self.set_text_reflection end def text self.text_class_name.safe_constantize end def has_text? !!self.text end def text_attrs(*args) args.each do |arg| define_method(arg.to_sym){ self.text.__send__(arg) } end end def has_many_fkey if self.text self.text.parent_fkey else :parent_id end end def set_text_reflection has_many :texts, class_name: self.text_class_name, foreign_key: self.has_many_fkey end end def text(locale=nil) locale ||= I18n.default_locale texts.find_or_create_by(lang_id: Lang[locale].id) end end end require 'active_record/mlang/lang' require 'active_record/mlang/lang_text' require 'active_record/mlang/railtie' if defined?(Rails::Railtie)
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
activerecord-mlang-0.0.3 | lib/active_record/mlang.rb |