Reserved names with ActiveRecord models

前端 未结 4 2054
南旧
南旧 2020-12-05 12:58

I take naming pretty seriously, so I think pretty hard about good names for my ActiveRecord models. However, I frequently come up with a name and it has some conflict with a

相关标签:
4条回答
  • 2020-12-05 13:07

    Here's the list as of Rails 5.1.5:

    !
    !=
    !~
    <=>
    ==
    ===
    =~
    []
    []=
    __binding__
    __callbacks
    __callbacks?
    __id__
    __send__
    _before_commit_callbacks
    _before_commit_without_transaction_enrollment_callbacks
    _commit_callbacks
    _commit_without_transaction_enrollment_callbacks
    _create_callbacks
    _destroy
    _destroy_callbacks
    _find_callbacks
    _initialize_callbacks
    _read_attribute
    _reflections
    _reflections?
    _rollback_callbacks
    _rollback_without_transaction_enrollment_callbacks
    _run_before_commit_callbacks
    _run_before_commit_without_transaction_enrollment_callbacks
    _run_commit_callbacks
    _run_commit_without_transaction_enrollment_callbacks
    _run_create_callbacks
    _run_destroy_callbacks
    _run_find_callbacks
    _run_initialize_callbacks
    _run_rollback_callbacks
    _run_rollback_without_transaction_enrollment_callbacks
    _run_save_callbacks
    _run_touch_callbacks
    _run_update_callbacks
    _run_validate_callbacks
    _run_validation_callbacks
    _save_callbacks
    _touch_callbacks
    _update_callbacks
    _validate_callbacks
    _validation_callbacks
    _validators
    _validators?
    `
    accessed_fields
    acts_like?
    add_to_transaction
    aggregate_reflections
    aggregate_reflections?
    as_json
    assign_attributes
    association
    association_cached?
    attribute_aliases
    attribute_aliases?
    attribute_before_last_save
    attribute_change
    attribute_change_to_be_saved
    attribute_changed?
    attribute_changed_in_place?
    attribute_for_inspect
    attribute_in_database
    attribute_method_matchers
    attribute_method_matchers?
    attribute_missing
    attribute_names
    attribute_present?
    attribute_previously_changed?
    attribute_was
    attributes
    attributes=
    attributes_before_type_cast
    attributes_changed_by_setter
    attributes_in_database
    becomes
    becomes!
    before_committed!
    blank?
    byebug
    cache_key
    cache_timestamp_format
    cache_timestamp_format?
    changed
    changed?
    changed_attribute_names_to_save
    changed_attributes
    changed_for_autosave?
    changes
    changes_applied
    changes_internally_applied
    changes_to_save
    class
    class_eval
    clear_attribute_changes
    clear_changes_information
    clone
    column_for_attribute
    committed!
    connection_handler
    debugger
    decrement
    decrement!
    deep_dup
    default_connection_handler
    default_connection_handler?
    default_scope_override
    default_scopes
    default_timezone
    define_singleton_method
    defined_enums
    defined_enums?
    delete
    destroy
    destroy!
    destroyed?
    destroyed_by_association
    destroyed_by_association=
    display
    dump_schema_after_migration
    dump_schemas
    dup
    duplicable?
    encode_with
    enum_for
    eql?
    equal?
    error_on_ignored_order
    error_on_ignored_order_or_limit
    errors
    extend
    freeze
    from_json
    frozen?
    gem
    has_attribute?
    has_changes_to_save?
    hash
    html_safe?
    id
    id=
    id?
    id_before_type_cast
    id_in_database
    id_was
    in?
    include_root_in_json
    include_root_in_json?
    increment
    increment!
    index_nested_attribute_errors
    init_with
    initialize_internals_callback
    inspect
    instance_eval
    instance_exec
    instance_of?
    instance_values
    instance_variable_defined?
    instance_variable_get
    instance_variable_names
    instance_variable_set
    instance_variables
    invalid?
    is_a?
    itself
    kind_of?
    load_dependency
    lock!
    lock_optimistically
    lock_optimistically?
    locking_enabled?
    logger
    mark_for_destruction
    marked_for_destruction?
    method
    method_missing
    methods
    model_name
    nested_attributes_options
    nested_attributes_options?
    new_record?
    nil?
    no_touching?
    object_id
    partial_writes
    partial_writes?
    persisted?
    pluralize_table_names
    pluralize_table_names?
    populate_with_current_scope_attributes
    presence
    presence_in
    present?
    pretty_inspect
    pretty_print
    pretty_print_cycle
    pretty_print_inspect
    pretty_print_instance_variables
    previous_changes
    primary_key_prefix_type
    private_methods
    protected_methods
    pry
    public_method
    public_methods
    public_send
    query_attribute
    quoted_id
    raw_write_attribute
    read_attribute
    read_attribute_before_type_cast
    read_attribute_for_serialization
    read_attribute_for_validation
    readonly!
    readonly?
    record_timestamps
    record_timestamps=
    record_timestamps?
    reload
    remote_byebug
    remove_instance_variable
    require_dependency
    require_or_load
    respond_to?
    respond_to_without_attributes?
    restore_attributes
    rollback_active_record_state!
    rolledback!
    run_callbacks
    save
    save!
    saved_change_to_attribute
    saved_change_to_attribute?
    saved_changes
    saved_changes?
    schema_format
    send
    serializable_hash
    singleton_class
    singleton_method
    singleton_methods
    skip_time_zone_conversion_for_attributes
    skip_time_zone_conversion_for_attributes?
    slice
    store_full_sti_class
    store_full_sti_class?
    suppress_warnings
    table_name_prefix
    table_name_prefix?
    table_name_suffix
    table_name_suffix?
    taint
    tainted?
    tap
    time_zone_aware_attributes
    time_zone_aware_types
    time_zone_aware_types?
    timestamped_migrations
    to_enum
    to_gid
    to_gid_param
    to_global_id
    to_json
    to_key
    to_model
    to_param
    to_partial_path
    to_query
    to_s
    to_sgid
    to_sgid_param
    to_signed_global_id
    to_yaml
    toggle
    toggle!
    touch
    touch_later
    transaction
    trust
    try
    try!
    type_for_attribute
    unloadable
    untaint
    untrust
    untrusted?
    update
    update!
    update_attribute
    update_attributes
    update_attributes!
    update_column
    update_columns
    valid?
    validate
    validate!
    validates_absence_of
    validates_acceptance_of
    validates_confirmation_of
    validates_exclusion_of
    validates_format_of
    validates_inclusion_of
    validates_length_of
    validates_numericality_of
    validates_presence_of
    validates_size_of
    validates_with
    validation_context
    warn_on_records_fetched_greater_than
    will_save_change_to_attribute?
    with_lock
    with_options
    with_transaction_returning_status
    write_attribute
    yield_self
    

    You can get it with

    ActiveRecord::Base.instance_methods.sort
    
    0 讨论(0)
  • 2020-12-05 13:13

    Column name type is also reserved and does not show in the list of MyModel.methods!

    The single-table inheritance mechanism failed to locate the subclass: 'f'. This error is raised because the column 'type' is reserved for storing the class in case of inheritance. Please rename this column if you didn't intend it to be used for storing the inheritance class or overwrite Project.inheritance_column to use another column for that information.

    Does anyone have experience with names like category, class, transaction, group, etc.? All pop into mind when I'm categorising data within my db....

    0 讨论(0)
  • 2020-12-05 13:14

    Here's a couple of resources to get you started:

    1. Rails reserved words. This one seems to be fairly up to date, last updated on Feb 2010. It even goes beyond rails and lists some common naming conflicts with SQL. dead
    2. Reserved words in rails. Here lives a heroku application featuring a searchable table of reserved rails words. The content on this one seems to be user-managed, so anybody with an account can add a new word.
    0 讨论(0)
  • 2020-12-05 13:25

    Open a rails console and a type MyModel.methods

    All the methods listed are reserved words.

    0 讨论(0)
提交回复
热议问题