rails 常用方法

bundle install --without production  不安装production中的gem


./configure && make && sudo make install  把源代码编译成可执行的程序


$ bundle exec rake -T db  可查看所有与数据库相关的任务,rake db:就是用来管理数据库的,是数据库不是表

rake -T 查看所rake 命令

heroku run rake db:migrate

bundle exec rake db:migrate VERSION=0  数据库回退到指定版本,0就是数据库最开始的状态

超链接
show  <%= link_to user.name, user %>
delete  <%= link_to "delete", user, method: :delete,  data: { confirm: "You sure?" } %>
edit   <%= link_to "Settings", edit_user_path(current_user) %>

生产环境

rails s --environment  production
bundle  exec  rake db:migrate RAILS_ENV = production
bundle exec rake db:migrate:reset   删除数据库中数据

调试
debugger

测试
页面内容测试(view),数据库数量/内容测试(model),controller测试

先单元测试,测试单个功能。再从页面考虑,根据行为,集成测试
rails g integration_test signup
rake  test:integration
bundle exec rake test TEST=test/integration/users_login_test.rb
bundle exec rake test TEST=test/integration/users_login_test.rb  TESTOPTS="--name test_login_with_valid_information"

测试中cookies中不能使用符号键,但可以实用字符串键   cookies[:key]会返回nil    cookies['key']会返回正确的值

测试中可以实用assigns获取controller中的实例变量,比如@user,test中assgins(:user)


安全随机数
SecureRandom.urlsafe_base64  返回A-Z a-z 0-9 -_    长度为22的随机字符串,每一位有64种可能


cookie
cookies[:remember_token] = { value: remember_token,   expires: 20.years.from_now.utc }
cookies.permanent[:remember_token] = remember_token    permanent  rails会自动将时间设为20年之后


cookies.signed[:user_id] = user.id     存入浏览器前,安全加密cookie
cookies.permanent.signed[:user_id] = user.id

User.find_by(id: cookies.signed[:user_id])
BCrypt::Password.new(remember_digest).is_password?(remember_token)

辅助方法
1.year.from_now           10.weeks.ago               1.kilobyte               5.megabytes

类方法
def self.new_token
SecureRandom.urlsafe_base64
end

class User < ActiveRecord::Base

class << self

def digest(string)
cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST :
BCrypt::Engine.cost
BCrypt::Password.create(string, cost: cost)
end

def new_token
SecureRandom.urlsafe_base64
end

end



Active Record
new_record? 检测对象是新创建,还是已经存在于数据库


路由
创建是post,编辑是patch。  构建form_for(@user)表单,根据@user.new_record?判断该发送什么请求

局部模板
rails将@users组成user对象列表,传给render后,rails会自动遍历这个列表,然后使用局部视图_user.html.haml渲染每个对象
一。<ul class="users">
<%= render @users %>
</ul>

_user.html.erb
<li>
<%= gravatar_for user, size: 50 %>
<%= link_to user.name, user %>
</li>
二。
局部模板名没必要_user,如果@users.each do |foobar|,则是render foobar
<ul class="users">
<% @users.each do |user| %>
<%= render user %>
<% end %>
</ul>


bundle exec
bundle exec annotate  

 

转载于:https://www.cnblogs.com/znsongshu/p/6080214.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值