提交 1c4d28ba 编写于 作者: J Joshua Peek

Move model naming into ActiveModel

上级 85f2f34d
......@@ -126,6 +126,7 @@ def render_with_record_collection
end
class Game < Struct.new(:name, :id)
extend ActiveModel::Naming
def to_param
id.to_s
end
......
require 'abstract_unit'
class Comment
extend ActiveModel::Naming
attr_reader :id
def save; @id = 1 end
def new_record?; @id.nil? end
......
......@@ -4,6 +4,7 @@ class WorkshopsController < ActionController::Base
end
class Workshop
extend ActiveModel::Naming
attr_accessor :id, :new_record
def initialize(id, new_record)
......
class Customer < Struct.new(:name, :id)
extend ActiveModel::Naming
def to_param
id.to_s
end
......@@ -12,6 +14,8 @@ class GoodCustomer < Customer
module Quiz
class Question < Struct.new(:name, :id)
extend ActiveModel::Naming
def to_param
id.to_s
end
......
require 'abstract_unit'
Scroll = Struct.new(:id, :to_param, :title, :body, :updated_at, :created_at)
Scroll.extend ActiveModel::Naming
class ScrollsController < ActionController::Base
FEEDS = {}
......
require 'abstract_unit'
Bunny = Struct.new(:Bunny, :id)
Bunny.extend ActiveModel::Naming
class Author
extend ActiveModel::Naming
attr_reader :id
def save; @id = 1 end
def new_record?; @id.nil? end
......@@ -12,6 +14,7 @@ def name
end
class Article
extend ActiveModel::Naming
attr_reader :id
attr_reader :author_id
def save; @id = 1; @author_id = 1 end
......
require 'abstract_unit'
class Post
extend ActiveModel::Naming
def id
45
end
......
......@@ -41,6 +41,7 @@ def test_homepage_url
def test_link_to_person
person = mock(:name => "David")
person.class.extend ActiveModel::Naming
expects(:mocha_mock_path).with(person).returns("/people/1")
assert_equal '<a href="/people/1">David</a>', link_to_person(person)
end
......
......@@ -494,6 +494,7 @@ def with_restful_routing
end
class Workshop
extend ActiveModel::Naming
attr_accessor :id, :new_record
def initialize(id, new_record)
......@@ -510,6 +511,7 @@ def to_s
end
class Session
extend ActiveModel::Naming
attr_accessor :id, :workshop_id, :new_record
def initialize(id, new_record)
......
......@@ -29,6 +29,8 @@ module ActiveModel
autoload :Base, 'active_model/base'
autoload :DeprecatedErrorMethods, 'active_model/deprecated_error_methods'
autoload :Errors, 'active_model/errors'
autoload :Name, 'active_model/naming'
autoload :Naming, 'active_model/naming'
autoload :Observer, 'active_model/observing'
autoload :Observing, 'active_model/observing'
autoload :StateMachine, 'active_model/state_machine'
......
require 'active_support/inflector'
module ActiveSupport
class ModelName < String
module ActiveModel
class Name < String
attr_reader :singular, :plural, :element, :collection, :partial_path
alias_method :cache_key, :collection
......@@ -14,12 +14,12 @@ def initialize(name)
@partial_path = "#{@collection}/#{@element}".freeze
end
end
end
class Module
# Returns an ActiveSupport::ModelName object for module. It can be
# used to retrieve all kinds of naming-related information.
def model_name
@model_name ||= ActiveSupport::ModelName.new(name)
module Naming
# Returns an ActiveModel::Name object for module. It can be
# used to retrieve all kinds of naming-related information.
def model_name
@_model_name ||= ActiveModel::Name.new(name)
end
end
end
require 'abstract_unit'
require 'active_support/core_ext/module/model_naming'
require 'cases/helper'
class ModelNamingTest < Test::Unit::TestCase
class NamingTest < Test::Unit::TestCase
def setup
@model_name = ActiveSupport::ModelName.new('Post::TrackBack')
@model_name = ActiveModel::Name.new('Post::TrackBack')
end
def test_singular
......
......@@ -3145,6 +3145,7 @@ def clone_attribute_value(reader_method, attribute_name)
end
Base.class_eval do
extend ActiveModel::Naming
extend QueryCache::ClassMethods
include Validations
include Locking::Optimistic, Locking::Pessimistic
......
......@@ -1086,6 +1086,7 @@ def method_missing(method_symbol, *arguments) #:nodoc:
end
class Base
extend ActiveModel::Naming
include CustomMethods, Validations
end
end
......@@ -7,5 +7,4 @@
require 'active_support/core_ext/module/attr_accessor_with_default'
require 'active_support/core_ext/module/delegation'
require 'active_support/core_ext/module/loading'
require 'active_support/core_ext/module/model_naming'
require 'active_support/core_ext/module/synchronization'
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册