Merge branch 'develop' of https://bdgit.educoder.net/Hjqreturn/pgfqe6ch8 into develop
commit
f8c5a67396
@ -0,0 +1,6 @@
|
|||||||
|
class UserAgent < ActiveRecord::Base
|
||||||
|
|
||||||
|
USER_AD = 1 # 广告宣传的引流
|
||||||
|
USER_REGISTER = 2 # 引流注册
|
||||||
|
USER_COMPETITION = 3 # 引流参加竞赛
|
||||||
|
end
|
@ -0,0 +1,42 @@
|
|||||||
|
<style>
|
||||||
|
/*//登录弹窗*/
|
||||||
|
.newLogipopup{
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
position: fixed;
|
||||||
|
bottom: 0px;
|
||||||
|
right: 0px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<div class="educontent newLogipopup" id="backImg" >
|
||||||
|
<div class="pr edu-txt-center height-100 pt110">
|
||||||
|
<div class="login_reg pr login_regs">
|
||||||
|
<div style="position: relative;">
|
||||||
|
|
||||||
|
<a href="javascript:void(0)" onclick="competitionfun();" id="closeIcon" style="position: absolute;right: -20px;top: 36px;">
|
||||||
|
<i class="iconfont icon-shanchudiao"></i>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<img src="/images/educoder/competitionslog.png" height="580px" width="637px" />
|
||||||
|
|
||||||
|
<a style="position: absolute;left:42%; bottom:18px;" onclick="setcompetitionfun();" >
|
||||||
|
<img height="40px" width="150px" src="/images/educoder/applys.png" />
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function competitionfun(){
|
||||||
|
localStorage.setItem('competition_uid', true);
|
||||||
|
hideModal();
|
||||||
|
}
|
||||||
|
|
||||||
|
function setcompetitionfun(){
|
||||||
|
competitionfun();
|
||||||
|
window.location.href="/competitions"
|
||||||
|
}
|
||||||
|
</script>
|
@ -1,52 +1,54 @@
|
|||||||
<img src="/images/educoder/teach_ex.jpg" width="100%"/>
|
<img src="/images/educoder/teach_ex.jpg" width="100%"/>
|
||||||
<div class="educontent">
|
<div class="educontent">
|
||||||
<div class="edu-back-white mb30 mt30">
|
<div class="edu-back-white mb30 mt30">
|
||||||
<p class="padding20-30 clearfix bor-bottom-greyE">
|
<p class="padding20-30 clearfix bor-bottom-greyE">
|
||||||
<span class="font-18 fl color-grey-3">教学案例</span>
|
<span class="font-18 fl color-grey-3">教学案例</span>
|
||||||
<%= link_to '发布案例', new_library_path, class: 'white-btn edu-filter-btn-blue fr mr10 mt8', style: 'color: #4CACFF' %>
|
<%= link_to '发布案例', new_library_path, class: 'white-btn edu-filter-btn-blue fr mr10 mt8', style: 'color: #4CACFF' %>
|
||||||
</p>
|
</p>
|
||||||
<div class="clearfix pl30 pr30">
|
<div class="clearfix pl30 pr30">
|
||||||
<ul class="fl library_nav mt20">
|
<ul class="fl library_nav mt20">
|
||||||
<li class="<%= params[:type] == 'mine' ? '' : 'active' %>">
|
<li class="<%= params[:type] == 'mine' ? '' : 'active' %>">
|
||||||
<%= link_to '全部', libraries_path(search: params[:search]), remote: true %>
|
<%= link_to '全部', libraries_path(search: params[:search]), remote: true %>
|
||||||
</li>
|
</li>
|
||||||
<li class="<%= params[:type] == 'mine' ? 'active' : '' %>">
|
<% if User.current.try(:logged?) %>
|
||||||
<%= link_to '我的', libraries_path(search: params[:search], type: 'mine'), remote: true %>
|
<li class="<%= params[:type] == 'mine' ? 'active' : '' %>">
|
||||||
</li>
|
<%= link_to '我的', libraries_path(search: params[:search], type: 'mine'), remote: true %>
|
||||||
</ul>
|
</li>
|
||||||
<div class="edu-position fr mt12">
|
<% end %>
|
||||||
<%= hidden_field_tag(:type, params[:type]) %>
|
</ul>
|
||||||
<input class="winput-300-35 panel-box-sizing" placeholder="输入教学案例标题、编号进行检索" type="text" id="search_name">
|
<div class="edu-position fr mt12 mb10">
|
||||||
<a href="javascript:void(0);" class="edu-btn-search font-16 color-grey" id="search"><i class="fa fa-search"></i></a>
|
<%= hidden_field_tag(:type, params[:type]) %>
|
||||||
</div>
|
<input class="winput-300-35 panel-box-sizing" placeholder="输入教学案例标题、编号进行检索" type="text" id="search_name">
|
||||||
</div>
|
<a href="javascript:void(0);" class="edu-btn-search font-16 color-grey" id="search"><i class="fa fa-search"></i></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="library-list-container">
|
</div>
|
||||||
<%= render partial: 'library_list' %>
|
</div>
|
||||||
</div>
|
<div class="library-list-container">
|
||||||
</div>
|
<%= render partial: 'library_list' %>
|
||||||
<script>
|
</div>
|
||||||
$(function(){
|
</div>
|
||||||
$(".library_nav").on("click","li",function(){
|
<script>
|
||||||
$(".library_nav li").removeClass("active");
|
$(function(){
|
||||||
$(this).addClass("active");
|
$(".library_nav").on("click","li",function(){
|
||||||
});
|
$(".library_nav li").removeClass("active");
|
||||||
|
$(this).addClass("active");
|
||||||
var searchFunc = function() {
|
});
|
||||||
var search = $("#search_name").val();
|
|
||||||
var type = $("input[name='type']").val();
|
var searchFunc = function() {
|
||||||
$.ajax({
|
var search = $("#search_name").val();
|
||||||
url: "<%= libraries_path %>",
|
var type = $("input[name='type']").val();
|
||||||
dataType: 'script',
|
$.ajax({
|
||||||
data: {search: search, type: type}
|
url: "<%= libraries_path %>",
|
||||||
});
|
dataType: 'script',
|
||||||
};
|
data: {search: search, type: type}
|
||||||
|
});
|
||||||
$("#search").live("click", searchFunc);
|
};
|
||||||
$('#search_name').bind('keypress',function(event) {
|
|
||||||
if (event.keyCode == "13") {
|
$("#search").live("click", searchFunc);
|
||||||
searchFunc();
|
$('#search_name').bind('keypress',function(event) {
|
||||||
}
|
if (event.keyCode == "13") {
|
||||||
});
|
searchFunc();
|
||||||
})
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
</script>
|
</script>
|
@ -1,93 +1,102 @@
|
|||||||
<%
|
<%
|
||||||
admin_or_self = admin_or_business? || @library.user_id == User.current.id
|
admin_or_self = admin_or_business? || @library.user_id == User.current.id
|
||||||
%>
|
%>
|
||||||
<div class="educontent mb50">
|
<div class="educontent mb50">
|
||||||
<p class="mt10 mb20 clearfix lineh-20">
|
<p class="mt10 mb20 clearfix lineh-20">
|
||||||
<%= link_to '教学案例', libraries_path, class: 'color-grey-9' %> >
|
<%= link_to '教学案例', libraries_path, class: 'color-grey-9' %> >
|
||||||
<span class="color-grey-3">详情</span>
|
<span class="color-grey-3">详情</span>
|
||||||
</p>
|
</p>
|
||||||
<p class="lineh-25 mb20 clearfix">
|
<p class="lineh-25 mb20 clearfix">
|
||||||
<span class="font-22 fl mr10 task-hide" style="max-width: 800px">
|
<span class="font-22 fl mr10 task-hide" style="max-width: 800px">
|
||||||
<%= @library.title %>
|
<%= @library.title %>
|
||||||
</span>
|
</span>
|
||||||
<%= show_library_tags(@library) %>
|
<%= show_library_tags(@library, class: 'mt3 ml10') %>
|
||||||
<% if admin_or_self %>
|
<% if admin_or_self %>
|
||||||
<% if @library.pending? %>
|
<% if @library.pending? %>
|
||||||
<span class="fl edu-filter-btn edu-activity-green mt3 ml10">草稿</span>
|
<span class="fl edu-filter-btn edu-activity-green mt3 ml10">草稿</span>
|
||||||
<% elsif @library.processing? %>
|
<% elsif @library.processing? %>
|
||||||
<span class="fl edu-filter-btn edu-activity-green mt3 ml10">审核中</span>
|
<span class="fl edu-filter-btn edu-activity-green mt3 ml10">审核中</span>
|
||||||
<% elsif @library.refused? %>
|
<% elsif @library.refused? %>
|
||||||
<span class="fl edu-filter-btn edu-activity-orange mt3 ml10">未通过</span>
|
<span class="fl edu-filter-btn edu-activity-orange mt3 ml10">未通过</span>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<%= link_to('返回', libraries_path, class: 'fr color-grey-9 mt5') %>
|
<%= link_to('返回', libraries_path, class: 'fr color-grey-9 mt5') %>
|
||||||
</p>
|
</p>
|
||||||
<div class="edu-back-white">
|
<div class="edu-back-white">
|
||||||
<div class="padding30">
|
<div class="padding30">
|
||||||
<div class="df">
|
<div class="df">
|
||||||
<%= link_to image_tag(url_to_avatar(@library.user), width: 50, height: 50, class: 'radius mr15 mt3'), user_path(@library.user) %>
|
<%= link_to image_tag(url_to_avatar(@library.user), width: 50, height: 50, class: 'radius mr15 mt3'), user_path(@library.user) %>
|
||||||
<div class="flex1">
|
<div class="flex1">
|
||||||
<li class="clearfix">
|
<li class="clearfix">
|
||||||
<span class="font-16 fl"><%= @library.user.show_real_name %></span>
|
<span class="font-16 fl"><%= @library.user.show_real_name %></span>
|
||||||
<% if admin_or_business? || @library.user_id == User.current.id && @library.pending? %>
|
<% if admin_or_business? || @library.user_id == User.current.id && @library.pending? %>
|
||||||
<%= link_to '删除', 'javascript:void(0);', data: { id: @library.id },
|
<%= link_to '删除', 'javascript:void(0);', data: { id: @library.id },
|
||||||
class: 'white-btn edu-blueline-btn fr ml20 delete-btn' %>
|
class: 'white-btn edu-blueline-btn fr ml20 delete-btn' %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% if admin_or_self %>
|
<% if admin_or_self %>
|
||||||
<%= link_to '编辑', edit_library_path(id: @library.id), class: 'white-btn edu-blueline-btn fr' %>
|
<%= link_to '编辑', edit_library_path(id: @library.id), class: 'white-btn edu-blueline-btn fr' %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</li>
|
</li>
|
||||||
<li class="clearfix">
|
<li class="clearfix">
|
||||||
<span class="fl color-grey-9 mr20"><%= @library.user.school_name %></span>
|
<span class="fl color-grey-9 mr20"><%= @library.user.school_name %></span>
|
||||||
<span class="fr">
|
<span class="fr">
|
||||||
<span class="fl color-grey-9 mr30">编码:<span class="color-grey-6"><%= @library.uuid %></span></span>
|
<span class="fl color-grey-9 mr30">编码:<span class="color-grey-6"><%= @library.uuid %></span></span>
|
||||||
<% if @library.published? %>
|
<% if @library.published? %>
|
||||||
<span class="fl color-grey-9">发布时间:<span class="color-grey-6"><%= @library.published_at.strftime('%Y-%m-%d %H:%M') %></span></span>
|
<span class="fl color-grey-9">发布时间:<span class="color-grey-6"><%= @library.published_at.strftime('%Y-%m-%d %H:%M') %></span></span>
|
||||||
<% else %>
|
<% else %>
|
||||||
<span class="fl color-grey-9">上传时间:<span class="color-grey-6"><%= @library.created_at.strftime('%Y-%m-%d %H:%M') %></span></span>
|
<span class="fl color-grey-9">上传时间:<span class="color-grey-6"><%= @library.created_at.strftime('%Y-%m-%d %H:%M') %></span></span>
|
||||||
<% end %>
|
<% end %>
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<!--增加姓名大学-->
|
||||||
<div class="break_full_word new_li" id="labraries_editorMd_content" style="box-sizing: border-box">
|
<div>
|
||||||
<textarea style="display:none;"><%= @library.content %></textarea>
|
<span class="fl color-grey-9">作者:</span>
|
||||||
</div>
|
<%= @library.author_name %>/<%= @library.author_school_name %>
|
||||||
<div class="mt10 pl20">
|
</div>
|
||||||
<%= render partial: 'attachments/links', locals: { attachments: @library.attachments, options: {} } %>
|
|
||||||
</div>
|
<div>
|
||||||
</div>
|
<div class="break_full_word new_li" id="labraries_editorMd_content" style="box-sizing: border-box">
|
||||||
</div>
|
<textarea style="display:none;"><%= @library.content %></textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="mt10 pl20">
|
||||||
<script>
|
<%= render partial: 'attachments/links', locals: { attachments: @library.attachments, options: {} } %>
|
||||||
var homeworkDescr = editormd.markdownToHTML("labraries_editorMd_content", {
|
</div>
|
||||||
htmlDecode: "style,script,iframe", // you can filter tags decode
|
</div>
|
||||||
taskList: true,
|
<div class="mt40">
|
||||||
tex: true, // 默认不解析
|
<%= render partial: 'praise_tread/new_praise', locals: { object: @library } %>
|
||||||
flowChart: true, // 默认不解析
|
</div>
|
||||||
sequenceDiagram: true // 默认不解析
|
</div>
|
||||||
});
|
</div>
|
||||||
$(function(){
|
</div>
|
||||||
// 删除
|
<script>
|
||||||
$('.delete-btn').on('click', function(){
|
var homeworkDescr = editormd.markdownToHTML("labraries_editorMd_content", {
|
||||||
var id = $(this).data('id');
|
htmlDecode: "style,script,iframe", // you can filter tags decode
|
||||||
op_confirm_tip_1("是否确认删除?", "destroyLibrary(" + id + ");")
|
taskList: true,
|
||||||
});
|
tex: true, // 默认不解析
|
||||||
})
|
flowChart: true, // 默认不解析
|
||||||
|
sequenceDiagram: true // 默认不解析
|
||||||
function destroyLibrary (id) {
|
});
|
||||||
$.ajax({
|
$(function(){
|
||||||
type: "DELETE",
|
// 删除
|
||||||
url: "<%= libraries_path %>/" + id,
|
$('.delete-btn').on('click', function(){
|
||||||
success: function (data) {
|
var id = $(this).data('id');
|
||||||
if(data && data.status == 0){
|
op_confirm_tip_1("是否确认删除?", "destroyLibrary(" + id + ");")
|
||||||
notice_box_redirect("<%= libraries_path %>", "删除成功");
|
});
|
||||||
} else {
|
})
|
||||||
notice_box(data.message);
|
|
||||||
}
|
function destroyLibrary (id) {
|
||||||
}
|
$.ajax({
|
||||||
});
|
type: "DELETE",
|
||||||
}
|
url: "<%= libraries_path %>/" + id,
|
||||||
|
success: function (data) {
|
||||||
|
if(data && data.status == 0){
|
||||||
|
notice_box_redirect("<%= libraries_path %>", "删除成功");
|
||||||
|
} else {
|
||||||
|
notice_box(data.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
</script>
|
</script>
|
@ -0,0 +1,66 @@
|
|||||||
|
<table class="edu-pop-table edu-txt-center" cellspacing="0" cellpadding="0" style="table-layout: fixed;">
|
||||||
|
<thead>
|
||||||
|
<th width="10%">ID</th>
|
||||||
|
<th width="10%">代理人登录名</th>
|
||||||
|
<th width="10%">代理人姓名</th>
|
||||||
|
<th width="20%">学校</th>
|
||||||
|
<th width="10%">竞赛报名状态</th>
|
||||||
|
<th width="10%">ip</th>
|
||||||
|
<th width="10%">ip</th>
|
||||||
|
<th width="20%">负责人</th>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<% @user_agents.each do |ua| %>
|
||||||
|
<% user = User.find_by_login(ua.key) %>
|
||||||
|
<% user_extension = user.extensions %>
|
||||||
|
<% school = user_extension.school %>
|
||||||
|
<tr>
|
||||||
|
<td><%= ua.id %></td>
|
||||||
|
<td class="edu-txt-left"><span><%= link_to ua.key, user_path(ua.key), :target => "_blank" %></span></td>
|
||||||
|
<td><%= link_to user.try(:show_real_name), user_path(user), target:'_blank' %></td>
|
||||||
|
<td><%= school.name %></td>
|
||||||
|
<td><%= "--" %></td>
|
||||||
|
<td><%= ua.ip %></td>
|
||||||
|
<td><%= "理由" %></td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<div class="cl"></div>
|
||||||
|
<div style="text-align:center;" class="new_expand">
|
||||||
|
<div class="pages_user_show" style="width:auto; display:inline-block;margin: 18px 0;">
|
||||||
|
<ul id="homework_pository_ref_pages">
|
||||||
|
<%= pagination_links_full @agents_pages, @agents_count, :per_page_links => false, :flag => true, :is_new => true %>
|
||||||
|
</ul>
|
||||||
|
<div class="cl"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
$(".eud-pointer").on("click", function(ev){
|
||||||
|
var nArrow = $(this).find("i");
|
||||||
|
var sx_order = nArrow.hasClass("fa-long-arrow-down") ? "asc" : "desc";
|
||||||
|
$.ajax({
|
||||||
|
url:"<%= shixuns_managements_path %>",
|
||||||
|
data: {sx_order:sx_order},
|
||||||
|
dateType: "script"
|
||||||
|
});
|
||||||
|
});
|
||||||
|
$(".shixun_webssh").on("click", 'input', function(ev){
|
||||||
|
var id = $(ev.target).parent().find("div").html();
|
||||||
|
var status = $(ev.target).parent().find("input").is(':checked');
|
||||||
|
$.ajax({
|
||||||
|
url:"<%= update_webssh_managements_path %>",
|
||||||
|
dataType: "script",
|
||||||
|
data:{shixun_id: id, status: status}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
$(".shixun_hidden").on("click", 'input', function(ev){
|
||||||
|
var id = $(ev.target).parent().find("div").html();
|
||||||
|
$.ajax({
|
||||||
|
url:"<%= update_shixun_hidden_managements_path %>",
|
||||||
|
dataType: "script",
|
||||||
|
data:{shixun_id: id}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
@ -0,0 +1,19 @@
|
|||||||
|
<%= form_tag(url_for(departments_part_managements_path),:id=>"department_part_search",:method => "post",:remote=>true) do %>
|
||||||
|
<div class="edu-con-top clearfix mb20 xmt10 bor-grey-e mt10">
|
||||||
|
<input class="fl task-form-20 task-height-30 ml25" id="shixun_Look_name" name="search" maxlength="" placeholder="输入关键字进行搜索" type="text" >
|
||||||
|
<a href="javascript:void(0);" class="fl task-btn task-btn-orange ml5 mt2" onclick="$('#department_part_search').submit();">搜索</a>
|
||||||
|
<a href="javascript:clearSearchCondition();" class="fl task-btn ml5 mt2" id="clear_contents">清除</a>
|
||||||
|
<%= link_to "关联代理人",add_departments_part_managements_path(),:class => "task-btn task-btn-green fr mt6 mr30" %>
|
||||||
|
<input name="sx_order" type="hidden">
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
<div class="edu-con-bg01 mt15" id="managements_department_part_list">
|
||||||
|
<%= render :partial => "managements/user_agent_list" %>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
function clearSearchCondition() {
|
||||||
|
$("#shixun_Look_name").val("");
|
||||||
|
$.get('<%= departments_part_managements_path() %>')
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
@ -0,0 +1,42 @@
|
|||||||
|
<%
|
||||||
|
praised = PraiseTread.praised(object)
|
||||||
|
praise_num = get_praise_num(object) || 0
|
||||||
|
%>
|
||||||
|
<p class="noteDetailPoints plus-praise-btn" data-tip-down="点赞" style="<%= praised ? 'display:block' : 'display:none' %>"><i class="iconfont icon-dianzan"></i><br><span class="praise-num"><%= praise_num %></span></p>
|
||||||
|
<p class="noteDetailPointsBCD1E3 minus-praise-btn" data-tip-down="取消点赞" style="<%= praised ? 'display:none' : 'display:block' %>"><span>已赞</span><br><span class="praise-num"><%= praise_num %></span></p>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
$(function(){
|
||||||
|
var $plusPraiseBtn = $('.plus-praise-btn');
|
||||||
|
var $minusPraiseBtn = $('.minus-praise-btn');
|
||||||
|
var praiseNum = parseInt(<%= praise_num %>);
|
||||||
|
|
||||||
|
$plusPraiseBtn.on('click', function(){
|
||||||
|
$.ajax({
|
||||||
|
method: "get",
|
||||||
|
url: "<%= praise_tread_praise_plus_path(obj_id: object.id, obj_type: object.class) %>",
|
||||||
|
dataType: 'json',
|
||||||
|
success: function(){
|
||||||
|
$plusPraiseBtn.hide();
|
||||||
|
praiseNum += 1;
|
||||||
|
$minusPraiseBtn.find('.praise-num').html(praiseNum);
|
||||||
|
$minusPraiseBtn.show();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
$minusPraiseBtn.on('click', function(){
|
||||||
|
$.ajax({
|
||||||
|
method: "get",
|
||||||
|
url: "<%= praise_tread_praise_minus_path(obj_id: object.id, obj_type: object.class) %>",
|
||||||
|
dataType: 'json',
|
||||||
|
success: function(){
|
||||||
|
$minusPraiseBtn.hide();
|
||||||
|
praiseNum -= 1;
|
||||||
|
$plusPraiseBtn.find('.praise-num').html(praiseNum);
|
||||||
|
$plusPraiseBtn.show();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
});
|
||||||
|
})
|
||||||
|
</script>
|
@ -0,0 +1,7 @@
|
|||||||
|
class AddColumnsToLibraries < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :libraries, :author_name, :string
|
||||||
|
add_column :libraries, :author_school_name, :string
|
||||||
|
add_column :libraries, :cover_id, :integer
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,12 @@
|
|||||||
|
class CreateUserAgents < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
create_table :user_agents do |t|
|
||||||
|
t.string :type
|
||||||
|
t.string :key
|
||||||
|
t.string :ip
|
||||||
|
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
add_index(:user_agents, :ip, :unique => true)
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,8 @@
|
|||||||
|
class ModifyTypeForUserAgents < ActiveRecord::Migration
|
||||||
|
def up
|
||||||
|
rename_column :user_agents, :type, :agent_type
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
end
|
||||||
|
end
|
After Width: | Height: | Size: 9.5 KiB |
After Width: | Height: | Size: 894 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 720 B |
After Width: | Height: | Size: 169 B |
@ -0,0 +1,7 @@
|
|||||||
|
FactoryGirl.define do
|
||||||
|
factory :user_agent do
|
||||||
|
type 1
|
||||||
|
key "MyString"
|
||||||
|
ip "MyString"
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,5 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe UserAgent, :type => :model do
|
||||||
|
pending "add some examples to (or delete) #{__FILE__}"
|
||||||
|
end
|
Loading…
Reference in new issue