Ar2gostruct
¶ ↑
Automatically generate Golang Struct from your activerecord models.
Installation¶ ↑
Install GMO as a gem:
gem install ar2gostruct
or add to your Gemfile:
# Gemfile gem "ar2gostruct"
and run bundle install to install the dependency.
Usage¶ ↑
On your rails directory.
bundle exec rake ar2gostruct association=true # association option enables Active Record Associations (Needs ar2gostruct v0.2.0 or greater). # or bundle exec ar2gostruct --a # If you prefer plural struct name, "--plural" option is available.
this will returns
// app/models/user.rb // Table name: users type User struct { Id int32 `json:"id"` Email string `json:"email"` EncryptedPassword string `json:"encrypted_password"` ResetPasswordToken string `json:"reset_password_token"` ResetPasswordSentAt time.Time `json:"reset_password_sent_at"` RememberCreatedAt time.Time `json:"remember_created_at"` SignInCount int32 `json:"sign_in_count"` CurrentSignInAt time.Time `json:"current_sign_in_at"` LastSignInAt time.Time `json:"last_sign_in_at"` CurrentSignInIp string `json:"current_sign_in_ip"` LastSignInIp string `json:"last_sign_in_ip"` ConfirmationToken string `json:"confirmation_token"` ConfirmedAt time.Time `json:"confirmed_at"` ConfirmationSentAt time.Time `json:"confirmation_sent_at"` UnconfirmedEmail string `json:"unconfirmed_email"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` Profile Profile `json:"profile"` Projects []Project `json:"projects"` }
If you’re using qbs, gorm or validator, Additional options are available.
bundle exec rake ar2gostruct orm=qbs # or ar2gostruct -o qbs # Using comma separated value, you can specify multiple ORMs(e.g. "ar2gostruct --o validator,qbs"). // app/models/user.rb // Table name: users type User struct { Id int32 `json:"id" qbs:"pk,notnull"` Email string `json:"email" qbs:"notnull,default:''"` EncryptedPassword string `json:"encrypted_password" qbs:"notnull,default:''"` ResetPasswordToken string `json:"reset_password_token"` ResetPasswordSentAt time.Time `json:"reset_password_sent_at"` RememberCreatedAt time.Time `json:"remember_created_at"` SignInCount int32 `json:"sign_in_count" qbs:"default:'0'"` CurrentSignInAt time.Time `json:"current_sign_in_at"` LastSignInAt time.Time `json:"last_sign_in_at"` CurrentSignInIp string `json:"current_sign_in_ip"` LastSignInIp string `json:"last_sign_in_ip"` ConfirmationToken string `json:"confirmation_token"` ConfirmedAt time.Time `json:"confirmed_at"` ConfirmationSentAt time.Time `json:"confirmation_sent_at"` UnconfirmedEmail string `json:"unconfirmed_email"` CreatedAt time.Time `json:"created_at" qbs:"created"` UpdatedAt time.Time `json:"updated_at" qbs:"updated"` }
Contributing¶ ↑
-
Fork it
-
Create your feature branch (
git checkout -b my-new-feature
) -
Commit your changes (
git commit -am 'Add some feature'
) -
Push to the branch (
git push origin my-new-feature
) -
Create new Pull Request