mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Move model naming into ActiveModel
This commit is contained in:
parent
85f2f34d5e
commit
1c4d28ba31
15 changed files with 31 additions and 13 deletions
|
@ -126,6 +126,7 @@ class RenderPartialWithRecordIdentificationController < ActionController::Base
|
|||
end
|
||||
|
||||
class Game < Struct.new(:name, :id)
|
||||
extend ActiveModel::Naming
|
||||
def to_param
|
||||
id.to_s
|
||||
end
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
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)
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
class Customer < Struct.new(:name, :id)
|
||||
extend ActiveModel::Naming
|
||||
|
||||
def to_param
|
||||
id.to_s
|
||||
end
|
||||
|
@ -12,6 +14,8 @@ end
|
|||
|
||||
module Quiz
|
||||
class Question < Struct.new(:name, :id)
|
||||
extend ActiveModel::Naming
|
||||
|
||||
def to_param
|
||||
id.to_s
|
||||
end
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
require 'abstract_unit'
|
||||
|
||||
Scroll = Struct.new(:id, :to_param, :title, :body, :updated_at, :created_at)
|
||||
Scroll.extend ActiveModel::Naming
|
||||
|
||||
class ScrollsController < ActionController::Base
|
||||
FEEDS = {}
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
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 @@ class Author
|
|||
end
|
||||
|
||||
class Article
|
||||
extend ActiveModel::Naming
|
||||
attr_reader :id
|
||||
attr_reader :author_id
|
||||
def save; @id = 1; @author_id = 1 end
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
require 'abstract_unit'
|
||||
|
||||
class Post
|
||||
extend ActiveModel::Naming
|
||||
def id
|
||||
45
|
||||
end
|
||||
|
|
|
@ -41,6 +41,7 @@ class PeopleHelperTest < ActionView::TestCase
|
|||
|
||||
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 @@ class LinkToUnlessCurrentWithControllerTest < ActionView::TestCase
|
|||
end
|
||||
|
||||
class Workshop
|
||||
extend ActiveModel::Naming
|
||||
attr_accessor :id, :new_record
|
||||
|
||||
def initialize(id, new_record)
|
||||
|
@ -510,6 +511,7 @@ class Workshop
|
|||
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'
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
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 @@ module ActiveSupport
|
|||
@partial_path = "#{@collection}/#{@element}".freeze
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class Module
|
||||
# Returns an ActiveSupport::ModelName object for module. It can be
|
||||
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 ||= ActiveSupport::ModelName.new(name)
|
||||
@_model_name ||= ActiveModel::Name.new(name)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,9 +1,8 @@
|
|||
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 @@ module ActiveRecord #:nodoc:
|
|||
end
|
||||
|
||||
Base.class_eval do
|
||||
extend ActiveModel::Naming
|
||||
extend QueryCache::ClassMethods
|
||||
include Validations
|
||||
include Locking::Optimistic, Locking::Pessimistic
|
||||
|
|
|
@ -1086,6 +1086,7 @@ module ActiveResource
|
|||
end
|
||||
|
||||
class Base
|
||||
extend ActiveModel::Naming
|
||||
include CustomMethods, Validations
|
||||
end
|
||||
end
|
||||
|
|
|
@ -7,5 +7,4 @@ require 'active_support/core_ext/module/attr_internal'
|
|||
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'
|
||||
|
|
Loading…
Reference in a new issue