مشکل در Migration

من یک سری مدل ساختم و این migrate ها رو کد نویس کردم حالا که میخوام دستور

** rake db:migration**

بزنم با ارور زیر مواجه می شوم

    bin/rake db:migrate
Running via Spring preloader in process 9020
== 20160311170058 CreateSubjects: migrating ===================================
-- create_table(:subjects)
-- ‍()
rake aborted!
StandardError: An error has occurred, all later migrations canceled:
undefined local variable or method `‍'for#<CreateSubjects:0x00000004380ca8>

و این هم کد migration “”

class CreateSubjects < ActiveRecord::Migration
      def up
        create_table :subjects do |t|
            t.string "name"
            t.integer "position"
            t.boolean "visible" , :default => false
          t.timestamps null: false
        end
      end

      def down
        drop_table :subjects
             this is "sample"
             stack overflow let me put this post
      end

    end
===============================================================

    class CreatePages < ActiveRecord::Migration
    def up
        create_table :pages do |t|
            t.integer "subject"
            #in ham mishe : t.references :page
            t.string "name"
            t.string "permalink"
            t.integer "position"
            t.boolean "visible", :default => false
            t.timestamps null: false
        end
    end

    add_index("pages","subject_id")
    add_index("pages","permalink")

    def down
        drop_table :pages
    end

end
===================================================================
    class CreateSections < ActiveRecord::Migration
    def up
        create_table :sections do |t|
            t.integer "page_id"
            #in ham mishe : t.references :page
            t.string "name"
            t.integer "position"
            t.boolean "visible", :default => false
            t.string "content_type"
            t.string "content"
            t.timestamps null: false
        end
    end
        add_index("sections","page_id")


    def down
        drop_table :sections
    end

end

هر جا سرج زدم در مورد لوکال وریبلا بود ولی من اصلا متغیر تعریف نکردم

استفاده از up و down کد رو ناخوانا می کنه از change استفاده کن.
بجای “string” هم از :symbol استفاده کن و اگر در رشته کد روبی نداری به جای "string"
از ‘string’ استفاده کن.
به جای راکت => از : استفاده کن. a: :b به جای a => b
تا اینجا فقط بررسی استایل روبی بود.

این اون وسط چیکار میکنه؟

this is "sample"
stack overflow let me put this post

s

> this is "sample"
> stack overflow let me put this post

این نوشتم استک اجازه بده مطرح کنم و نداد یادم رفت موند

این مشکل حل شد چن جاش سوتی داده بودم .

در مورد change تو یه سایتی گفته بود اگه دراپ تیبل کنیم دیگه بر نمیگردونه برای همین میگفت این روش بهتره

به جای اکت => از : استفاده کن. a: :b به جای a => b

ممنون نمیدونستم اینم میشه ولی این دستور و اینجوری زدم ارور داد

>             t.boolean "visible", :default :: false

استفاده از آپ و داون خیلی بهتره و کمک می کنه که rollback داشته باشین

2 پسندیده

t.boolean :visible, default: true
استفاده کن.

1 پسندیده

rollback رو با change هم داریم مگر اینکه کد جوری باشه که ریلز نتونه revert کنه وگرنه change راحتر و خوانا تره

t.boolean :visible, default:  false

حتما Rubocop رو نصب کن و برنامت رو با Rubocop اسکن کن

1 پسندیده